VBA utilizar un combobox para buscar
Resuelto
Usgpa
Mensajes publicados
14
Estado
Miembro
-
Usgpa -
Usgpa -
Hola,
Soy principiante en VBA de Excel y presento un caso que seguramente te parecerá muy simple.
De hecho, tengo una lista de documentos en Hoja2 con 4 columnas de características (A, B, C y D). He creado un Userform donde tengo un combobox que permite seleccionar un objeto de la lista por su característica A. Me gustaría saber cómo hacer para que aparezcan en los tres Textbox de mi Userform los datos B, C y D correspondientes a mi objeto.
Gracias de antemano por el tiempo que me brindarás.
Soy principiante en VBA de Excel y presento un caso que seguramente te parecerá muy simple.
De hecho, tengo una lista de documentos en Hoja2 con 4 columnas de características (A, B, C y D). He creado un Userform donde tengo un combobox que permite seleccionar un objeto de la lista por su característica A. Me gustaría saber cómo hacer para que aparezcan en los tres Textbox de mi Userform los datos B, C y D correspondientes a mi objeto.
Gracias de antemano por el tiempo que me brindarás.
18 respuestas
-
Hola,
Bajo Microsoft Visual Basic, haz doble clic en el combobox, el siguiente código aparecerá:
Private Sub ComboBox1_Change() End Sub
Entre estas dos líneas escribe:
Private Sub ComboBox1_Change()Dim a As Integer Dim cherche As String cherche = ComboBox1.Value a = Sheets("Feuil1").Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row TextBox1 = Range("A" & a).Offset(0, 1).Value TextBox2 = Range("A" & a).Offset(0, 2).Value TextBox3 = Range("A" & a).Offset(0, 3).Value
End Sub
Por supuesto, a adaptar
--
Cordialmente, y ..... ¡Feliz Año, mis mejores deseos para 2010!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -
intenta sin Sheets("Feuil2") así:
a = Cells.Find(What:=buscar, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
De lo contrario, ¿cómo completas tu combobox?
--
Cordialmente, y ..... ¡Feliz Año Nuevo, mis mejores deseos para 2010!
-- Todo problema tiene su solución. Si no hay solución, ¿cuál es el problema? -- -
Hola,
Por supuesto. El código:a = Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
te devuelve un número: el número de la fila. Después, puedes usarlo para eliminar una o varias celdas:Range("B" & a).Delete
oRange(Cells(1,a),Cells(6,a)).Delete
para eliminar de la columna A a la columna F
--
Saludos, y ..... ¡Feliz Año, mis mejores deseos para 2010!
-- Todo problema tiene su solución. Si no hay solución, ¿cuál es el problema? -- -
Gracias Pijaku. Aparentemente mi VBA se bloquea en:
a = Sheets("Feuil2").Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
Me lo subraya en amarillo y me señala un error de tipo "9". -
¿Hay un error de tipo "9"? ¿Cuál es el mensaje de error completo?
--
Atentamente, y ..... ¡Feliz Año Nuevo, mis mejores deseos para 2010!!!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -
-
Pijaku ¡Gracias! ¡Tu segunda solución era la correcta! ¡Muchas gracias y que tengas un buen día!
-
Hola,
Me gustaría saber si es posible, gracias a un botón "eliminar" de un userform, eliminar las celdas así encontradas sin tener que eliminar toda la fila.
Gracias de antemano. -
Gracias de nuevo, Pijaku. Una vez más tu código funciona, pero lamentablemente una vez que se eliminan las celdas, mi primer userform presenta un error ya que el código (a = Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row) se destaca en amarillo porque el valor que servía de referencia ya no existe. El error también ocurre si lo descargo al abrir el segundo userform...
¿Tienes alguna idea? -
Volvemos a mi pregunta del post 5: ¿Cómo completas tu combobox?
No entiendo tampoco por qué no quieres eliminar toda la línea. En la gestión de bases de datos, o reemplazas o eliminas toda una línea, pero dejar celdas vacías no es absolutamente bueno para una bdd...
--
Atentamente, y ..... ¡Feliz Año, mis mejores deseos para 2010!!!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -
Mi combobox toma la primera columna de mi hoja, que es una de las características de los objetos listados.
De hecho, no quería eliminar la fila completa para no quitar los botones y estadísticas que he colocado a la derecha de la tabla... si eso causa un problema, los colocaré en otra hoja, todavía no tengo mentalidad de VBA... y por lo tanto, no tengo los reflejos útiles :)
Gracias -
En realidad, no sabiendo cómo programar un combo para que contenga únicamente las celdas llenas de una columna, lo programé para que tomara todas las celdas de la columna A. Así que las celdas que desaparecen no se ven.
Por lo tanto, haré una página de inicio con los botones, etc. Así podré eliminar toda la fila. ¿Puedes darme la fórmula para eliminar toda una fila? -
Simplemente, adaptado a tu caso:
a = Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row Rows(a).Delete
--
Cordialmente, y ..... ¡Feliz Año Nuevo, mis mejores deseos para 2010!!!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -
Muchas gracias. Sin embargo, una vez eliminada la línea, sigue habiendo un mensaje de error resaltado en amarillo:
a = Feuil2.Cells.Find(What:=cherche, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlNext).Row
del primer userform...
Error 1004 -
sí, ya que estás buscando de nuevo (no sé por qué, de hecho) el valor "busca" que acabas de eliminar...
--
Cordialmente, y ..... ¡Feliz Año Nuevo, mis mejores deseos para 2010!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -
De hecho, he programado que la búsqueda se inicie con cada cambio en la combobox1 (Private Sub ComboBox1_Change()). Lo extraño es que la búsqueda se inicia incluso cuando mi userform que contiene la combobox está cerrado... pensaba que eso solucionaría el problema, pero parece que no...
-
Hola,
¿cómo lo cerraste? Si solo hiciste:UserForm1.Hide
no es suficiente.
Prueba:Unload UserForm1
Lo mejor sería que pusieras todo tu código aquí y veamos por qué no funciona. Tendré un poco de tiempo mañana si quieres…
--
Saludos, y..... ¡Feliz Año Nuevo, mis mejores deseos para 2010!
-- Todo problema tiene su solución. Si no hay solución, ¿dónde está el problema? -- -