Crear un cuadro de entrada para buscar un valor
Resuelto
caribou38
Mensajes publicados
31
Estado
Miembro
-
caribou38 Mensajes publicados 31 Estado Miembro -
caribou38 Mensajes publicados 31 Estado Miembro -
Hola,
¿cómo puedo usar una caja que permita ingresar un valor a buscar en una lista y seleccionar todas las celdas que contengan ese valor e inscribir en la celda de al lado la hora?
No logro combinar la función de búsqueda y una inputbox.
Gracias por tu ayuda
¿cómo puedo usar una caja que permita ingresar un valor a buscar en una lista y seleccionar todas las celdas que contengan ese valor e inscribir en la celda de al lado la hora?
No logro combinar la función de búsqueda y una inputbox.
Gracias por tu ayuda
Configuración: Windows XP Firefox 3.0
18 respuestas
-
una de las bases de este foro si quieres obtener ayuda es decirnos en qué lenguaje deseas hacerlo...
¡No hay alguien que te dé la solución en todos los lenguajes posibles e imaginables! -
Hola,
Es fácilmente realizable, pero tal vez sería más simple seleccionar una de las celdas que contiene las celdas a buscar y un botón para enviar.
¿Qué opinas?
--
La experiencia instruye más seguramente que el consejo. (André Gide)-
Hola
mi problema es que no logro escribir la macro que me permita buscar en la columna los valores que corresponden al criterio
for i=9 to 100
Maplage=range("F9:F100")
cells.find(what=range("G2"), after:activecell).activate
activecell.offset(0,3)=time
NEXT
Problema, esta macro no funciona como se esperaba, busca en todas las celdas de la hoja y escribe en varios lugares
necesito su ayuda, gracias
-
-
No especificas las coordenadas, pero he deducido..
Sub BV2() Dim i As Long Dim Debut1 As Integer Dim Critere As Variant Debut1 = 9 Critere = Cells(2, 7) 'para G2 For i = Debut1 To Range("F1").SpecialCells(xlCellTypeLastCell).Row If Cells(i, 6) = Critere Then 'prueba columna F Cells(i, 9) = Time 'escribe columna I End If Next i End Sub
Dices
--
La experiencia instruye más seguramente que el consejo. (André Gide)-
Hola
gracias por tu ayuda, tu fórmula funciona perfectamente
estaba usando esta macro
If Range("IV1") > 0 Then
For Each objCell In Range("U4:AV2000")
If objCell.Value = Range("IV1") Then objCell.Offset(1, 2) = Time
Next objCell
pero le toma tiempo procesar todas las filas
gracias por tu solución
ahora me enfrento a otro problema, tengo que escribir una macro que busque un valor en una columna, una vez encontrado, copie ciertas celdas, por ejemplo A1, A10, A23 hasta 7 valores y los copie en un rango
no sé si he sido claro, pero ya no puedo pensar con este problema que es tema de mi práctica, gracias por tu ayuda
hasta luego
-
-
¿qué es tu 'bueno', una hoja? ¿un UserForm?
Muestra la macro que comenzaste para eso.
--
La experiencia instruye más seguramente que el consejo. (André Gide)-
hola
aquí hay una parte de mi macro que me está causando problemas
la macro busca en la base de datos un valor ingresado en el rango "CV2" y tan pronto como lo encuentra, se desplaza, copia el valor encontrado y lo pega en una hoja (bon) en otra hoja
el problema es que si el valor no se encuentra, la macro falla
gracias por el tiempo que me dedicas
'rellena el local en el bon (hoja que debe ser impresa)
With Sheets("bon")
Columns("J:J").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 1).Select
ActiveCell.Copy
Range("A8:A15").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select
ActiveSheet.Paste
Columns("J:J").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 2).Select
ActiveCell.Copy
Range("A8:A15").Select
Selection.Find(what:=Range("CV2"), After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 3).Select
Range("B6") = Range("'hoja de entrada'!J6")
Range("B7") = Range("'hoja de entrada'!G6")
Range("B8") = Range("'hoja de entrada'!E6")
Range("E16") = Range("'hoja de entrada'!H6")
ActiveSheet.Paste
debería usar un bucle para realizar la búsqueda, pero solo obtengo una macro que se ejecuta indefinidamente
a+
-
-
Para tu 1ª error, hay que poner un On error,
On Error GoTo pasa ...... Exit Sub pasa: msgbox "Valor no encontrado" End sub
Para el 2, supongo que eso es lo que quieres hacer?
Para realizar búsquedas más complejas, usa una instrucción For Each...Next con el operador Like. Por ejemplo, el siguiente ejemplo de código muestra cómo buscar todas las celdas del rango A1:C5 que utilizan una fuente cuyo nombre comienza con las letras « Cour ». Cuando Microsoft Excel encuentra una celda correspondiente, le asigna la fuente Times New Roman.For Each c In [A1:C5] If c.Font.Name Like "Cour*" Then c.Font.Name = "Times New Roman" End If Next
Si no, explica mejor el 2.
--
La experiencia enseña más seguramente que el consejo. (André Gide)-
Hola
gracias por el tiempo que me dedicas
adjunto un ejemplo de mi archivo de Excel para que veas lo que debo hacer
tus consejos me han hecho progresar en mi proyecto, mil gracias de nuevo
https://www.cjoint.com/?icnHRTXfv5
he anotado en verde en la hoja a lo que debo llegar, pero por ahora estoy dando vueltas en círculo
-
-
No entiendo, pon los datos completos (rellena toda la línea) para una línea en la hoja motor, incluida la segunda línea que parece estar contabilizada... ¿NB+ y NB-? en la penúltima columna.
Luego, con los datos de la hoja motor, llenas completamente la hoja buena, pides datos del 1 al 7 pero ¿qué?
--
La experiencia enseña más seguramente que el consejo. (André Gide)-
Hola
Te vuelvo a enviar un ejemplo de mi archivo
Lo que busco hacer es buscar en la última columna de la hoja "motor"
las celdas que contienen un número de bono y copiarlas en la hoja bono en F3
copiar en la fila todos los números de bono, por ejemplo (V4, Z4, AD4...) y copiarlos en la hoja bono en (B9, C9, D9, E9, F9, G9, B10)
Luego copiar el bono en la hoja impresión
y repetir el mismo procedimiento con la siguiente fila que contenga un número de bono
Sé que no soy muy claro, y me disculpo
https://www.cjoint.com/?icqqQ1SFPr
-
-
Aunque he sido claro, al menos eso me parece...
Luego, con los datos de la hoja motor, completas completamente la hoja buena, pides datos del 1 al 7 pero ¿qué?
Para que me entiendas mejor, A MANO COMPLETAS LA HOJA CON LOS DATOS COMO DEBE SER, JUSTO ANTES DE PONERLA EN LA HOJA DE IMPRESIÓN. así, tengo referencias sobre lo que quieres.
Y una pregunta adicional, dices luego pasar a la siguiente línea y comenzar de nuevo,
PERO ¿DÓNDE DEBE IR el segundo formulario... el tercero, etc... en la hoja de impresión? uno debajo del otro?
Ten en cuenta que no estoy en tu cabeza y que necesito información, mientras no sepa exactamente lo que quieres es imposible lograrlo.
--
La experiencia instruye más seguramente que el consejo. (André Gide)-
Hola
y gracias nuevamente por tu paciencia
te envío un ejemplo con un bono relleno con la información que quiero que aparezca
sí, los bonos deben estar registrados en la hoja de impresión
https://www.cjoint.com/?idlFcTBcHA
no sé si lo que quiero realizar es factible, así que si tienes otra solución que me ayude a avanzar, estoy a tu disposición
gracias por tu ayuda -
He consultado la base de conocimiento de Microsoft y resulta que es un bug
Te paso la información
Tienes un DLL ActiveX de Visual Basic que tiene un método que toma un arreglo de objetos Scripting Dictionary como argumento. Puede funcionar correctamente cuando tu cliente de Visual Basic se ejecuta en el entorno de desarrollo integrado (IDE) utilizando este método, pero cuando lo ejecutas como una aplicación compilada, recibes el siguiente mensaje de error en tiempo de ejecución:
Error de ejecución "-2147417848 (80010108)":
Método '~~' falló "de objeto"
Esto ocurre únicamente cuando usas enlace tardío para llamar al método.
Volver al principio
Resolución
Utiliza el enlace anticipado para eludir el problema.
Como no soy muy hábil en VBA, seguiré buscando hasta encontrar una solución.
-
-
Ningún problema para hacer lo que querías, he hecho con la información dada.
Si no es exactamente eso, me dices...
Tu archivo
--
La experiencia enseña más seguramente que el consejo. (André Gide)-
Te agradezco mucho por tu ayuda y sobre todo tu paciencia
es exactamente eso lo que estaba tratando de hacer desde hace un mes sin lograrlo
voy a seguir pidiéndote ayuda, tu macro me copia bien el primer comprobante pero luego me envía un mensaje de error "el método pegar del objeto ha fallado" o "el método seleccionar clase ha fallado"
-
-
¡TEN MUCHA ATENCIÓN a los nombres de las hojas! Si me has puesto un modelo con los nombres de hojas diferentes, es por eso que falla; a menudo, un espacio marca la diferencia. Si pruebas en mi libro de trabajo, las 2 correctas están bien copiadas en impresión.
Así que busca un poco... Te toca jugar.
--
La experiencia instruye más seguramente que el consejo. (André Gide)-
Estoy probando bien en el archivo que me enviaste y todavía tengo este error
seguiré buscando
una vez más, gracias por tu ayuda que me ha sido más que valiosa.
Te mantendré informado sobre la evolución de la situación.- ¿Tienes el error en MI CARPETA? Si es así, ¿qué has cambiado? Porque en mi caso funciona perfectamente.
EDIT: Espera... ¿no lo estarías probando en Cjoint por casualidad? Porque no funciona, hay que hacer clic derecho en el nombre del archivo y guardarlo en tu disco duro, y entonces abrirlo.
--
La experiencia instruye más seguramente que el consejo. (André Gide) - he guardado el archivo en mi disco duro
me pregunto si no es porque utilizo una versión de Excel 97
tu macro funciona bien en la primera línea, pero en la siguiente envía un error
no logra pegar el valor correcto después del primero en la hoja de impresión
el resultado es que Excel se bloquea y tengo que presionar ctrl ALT suprimir para poder salir
sigo buscando de dónde puede venir el error, no hay razón para que funcione en tu computadora y no en la mía
gracias de nuevo por tu ayuda
-
-
Habrá que encontrar una solución..
intenta esto..
'--------------------------------------------- 'Copia el bueno en la página de impresión. FLbon.Range("A4:G19").Copy FLI.Cells(LigImp, 1) LigImp = LigImp + 16 '---------------------------------------------
En la parte inferior de la macro, reemplaza todas las líneas entre los guiones por lo que está arriba, también funciona para mí, no utilicé este método primero porque a veces también crea problemas.
dices
--
La experiencia instruye más seguramente que el consejo. (André Gide) -
Aparentemente es un error de Windows.
Un DLL ActiveX de Visual Basic que se conecta en el registro de eventos de Windows NT puede provocar errores cuando es llamado por un programa cliente ejecutándose en el depurador de Visual Basic. Los posibles errores incluyen:
• Error 429.
• Error 80010108 OLE.
• Violación de acceso.
Estado
Microsoft ha confirmado la existencia de un problema en Microsoft Transaction Server versión 1.0. Estamos investigando este problema y publicaremos la nueva información aquí en la Base de conocimientos de Microsoft tan pronto como esté disponible.
¿Cuál es la actualización de Windows que tienes? PakX?
--
La experiencia instruye más seguramente que el consejo. (André Gide) -
He vuelto a leer el mensaje de error que diste... parece que es un error con los objetos.
Reemplaza la línea copy porSheets("bon").Range("A4:G19").Copy Sheets("impression").Cells(LigImp, 1)
y si todavía no funciona, cambiaré en el cuerpo de la macro
Edit:
Hay algo más, verifica en la ventana Proyecto - VBAprojet del IDE, si no tienes el proyecto MoreFunc_Toolbaar
Dices
--
La experiencia enseña más seguramente que el consejo. (André Gide) -
pon tu carpeta en Cjoint
Edita;
Espera.. cuando Excel se bloqueó, ¿reiniciaste? si no, hazlo.
Yo tengo el 2000 y cuando me pasa eso también tengo que hacerlo.
--
La experiencia enseña más seguramente que el consejo. (André Gide)-
he reiniciado y vuelto a probar, pero siempre los mismos síntomas, doctor
te vuelvo a poner el archivo, he dejado el error para que puedas verlo
https://www.cjoint.com/?idvunZFA47
-
-
Lo siento, pero he descargado el libro, he hecho clic en el botón y todo está OK.
Sin tu PC realmente no veo qué es lo que falla.
Verifica eso de nuevo..
En el IDE >> Herramientas >> Referencias
En la ventana que se abre debes tener las siguientes líneas marcadas..
Visual Basic For Applications
Microsoft Excel X.X Object Library
Ole Automation
Microsoft Office X.X Object Library
Microsoft Forms 2.0 Object Library
Si falta alguna, búscala en la lista y márcala.
--
La experiencia instruye más seguramente que el consejo. (André Gide) -
he probado la macro en otro pc y el mismo resultado
así que o me falta una librería o mi versión de Excel está fallando
seguiré analizando la macro hasta encontrar dónde se detiene
gracias de nuevo por tu ayuda y tu gran paciencia
te mantendré informado si hay novedades
hasta luego -
He reorganizado la macro y eliminado todo lo relacionado con los objetos, no es un código optimizado pero probablemente funcione.
https://www.cjoint.com/?iehNn0c54X
¡Hasta luego!
--
La experiencia enseña con más certeza que el consejo. (André Gide)-
Hola
gracias por tu ayuda, me siento avergonzado de monopolizarte así
tienes mi infinita gratitud
he probado la macro, esta vez ha mejorado, funciona, pero mientras no haya vaciado la hoja de impresión, si no, vuelve a aparecer el error
If Cells(LigImp, 1).Interior.ColorIndex = xlNone Then Exit For
imposible leer la propiedad interior de la clase rango
gracias de nuevo por tu ayuda -
He modificado la forma de copiar los bonos en la página de impresión, parece que funciona aunque me copia los bonos en orden descendente
pero por falta de mejor por ahora
es bien esta línea que no pasa en mi caso, sabe Dios por qué
Copia el bono en la página de impresión.
Sheets("bon").Range("A4:G19").Copy Sheets("impression").Cells(LigImp, 1)
LigImp = LigImp + 16
la he reemplazado por
'Copia el bono en la página de impresión.
Sheets("bon").Select
Range("A4:G20").Select
Selection.Copy
Sheets("impression").Select
Rows("1:1").Select
Selection.Insert Shift:=xlDown
gracias de nuevo infinitamente por tu ayuda y es sincero, me has sacado de un aprieto, un mes que he estado lidiando con esta macro -
No, vuelve a este libro de trabajo entonces, y añade debajo de...
'hay realmente fórmulas para llegar a la última línea 'rellena pero no funciona cuando hay filtros 'que están activados. Si LigImp < 1 entonces LigImp = 1
Eso ya no tenía nada que ver con los errores anteriores, es un error normal si LigImp = 0
Porque tu manera de hacerlo en el siguiente puesto no es muy... ehh
¡Hasta luego!
--
La experiencia instruye más seguramente que el consejo. (André Gide) -
He intentado tu modificación pero recibo un nuevo error
es la forma de copiar en la hoja de impresión que no funciona para mí
el segundo punto es que acabo de darme cuenta de que si la primera celda en la hoja de lista de motores está vacía, la macro se detiene y no revisa las otras celdas
estoy viendo si puedo reemplazar if por each for
¿qué opinas?
sé indulgente conmigo, estoy empezando con las macros y me has ayudado a progresar -
no cambies nada en el for, si no, no funcionará más, para hacer un For each necesitas saber hasta dónde llegar, lo cual no es posible con tus filtros.
Está hecho a propósito que se detenga, no debe haber una línea vacía cada 2 líneas, es por los autofiltros que pusiste, es difícil saber hasta dónde llegar, pero si me pones un libro un poco más completo y realista, revisaría eso.
y explícame para qué sirve esta fórmula, por eso solo tomé cada dos líneas..
=NBVAL(X4;AB4;AF4;AJ4;AN4;AR4;AV4)-NBVAL(X5;AB5;AF5;AJ5;AN5;AR5;AV5)
Ya te hice la pregunta pero no has respondido.
¿La hoja motor está terminada o puede variar con el tiempo?
--
La experiencia enseña más seguro que el consejo. (André Gide)
-
-
Haaaach.. Ahora entiendo mejor, cambiaste la fórmula =NBVAL(X5;AB5;AF5;AJ5;AN5;AR5;AV5) que ya no hace referencia a la línea siguiente y tu 2ª línea está inicializada. La prueba de que hay que dar la mayor cantidad de información posible y que no sea errónea.
Sub SplitData() Dim i As Long, e As Integer Dim TB Dim Ls TB = Array(16, 17, 18, 50, 22, 26, 30, 38, 42, 46) Ls = Array("C9", "D9", "A9", "F4") '--------------------------------------------- 'Ancho de las columnas For i = 1 To 7 Sheets("impression").Columns(i).ColumnWidth = Sheets("bon").Columns(i).ColumnWidth Next i '--------------------------------------------- For i = 4 To Range("AX1").SpecialCells(xlCellTypeLastCell).Row If Sheets("Liste moteur").Cells(i, 50) <> "" Then ' VideBon For e = 0 To 3 Sheets("bon").Range(Ls(e)) = Sheets("Liste moteur").Cells(i, TB(e)) Next e For e = 0 To 5 Sheets("bon").Range("B10").Offset(0, e) = Sheets("Liste moteur").Cells(i, TB(e + 4)) Next e '--------------------------------------------- 'Copia el bon en la página de impresión. Sheets("bon").Select Range("A4:G20").Select Selection.Copy Sheets("impression").Select Range("A65536").End(xlUp).Offset(1, 0).Select Selection.Insert Shift:=xlDown '--------------------------------------------- End If Next i Application.CutCopyMode = False Sheets("Liste moteur").Select Range("A1").Select End Sub
A+
--
La experiencia instruye más seguro que el consejo. (André Gide) -
Hola,
Como no tengo tus hojas, no pude realmente probarSub validar() Dim RC As String Application.ScreenUpdating = False Sheets("BDD").Select On Error Resume Next 'si hay un error en Finf Sheets("BDD").Select Cells.Find(What:=Sheets("hoja de entrada").Range("J6").Value, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False).Activate On Error GoTo 0 ' cancela la detección de errores RC = ActiveCell.Offset(0, 1).Address & ":" & ActiveCell.Offset(0, 7).Address Range(RC).Copy Sheets("hoja de entrada").Select Range("K17").Select ActiveSheet.Paste Application.ScreenUpdating = False End Sub
¡Hasta luego!
--
La experiencia enseña más seguramente que el consejo. (André Gide)-
hola
he sustituido tu macro por la que tenía y funciona perfectamente, gracias
te adjunto mi libro si tienes tiempo para echarle un vistazo
algunas funciones pueden fallar porque no he incluido la totalidad, que pesa 4MB
intenté poner los botones que están en las hojas en una barra de herramientas, pero sin éxito
solo logro hacer que todo se bloquee
segundo punto, las funciones encontrar que fallan si no se encuentra resultado
gracias de nuevo por toda la ayuda que me has proporcionado
https://www.cjoint.com/?igo3TGgddD
-