Saltar al contenido
PROGRAMAR EN VBA MACROS DE EXCEL

Combobox depende otro combobox carga datos en texbox #148

El presente ejemplo trata de un combobox que depende de otro combobox y a su vez carga datos en textbox.

En llenar listbox dependiendo de otro listbox y combobox, llenar combobox y buscar datos, son entre otros post están relacionados con el presente ejemplo denominado Combobox depende de otro combobox y carga datos en textbox, a diferencia de combobox depende otro combobox y llena listbox, donde en vez de cargar los datos en textbox, se llena un listbox,  también existen otros donde se exponen macros sobre como recorrer las filas con macro y son: recorrer filas buscando y comparando datos, recorrer filas y contar celdas con datos, recorrer filas y copiar de la columna A a la B, además hay varios ejemplos que encontrarás aquí.

Antes de seguir recomiendo leer un excelente libro sobre Excel que te ayudará operar las planillas u hojas de cálculo, haz click acá, si quieres aprender sobre Excel, en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los mejores cursos on line que he visto en internet.

  

Aquí te muestro una macro que utiliza un formulario en el se encuentra un combobox que depende de otro combobox, es decir en base a los datos que se seleccionen en el primer combobox se llenará el segundo combobox; una vez seleccionados los datos en el segundo combobox, la macro buscará en la base de datos y cargará todos los datos en los textbox insertados en el formulario.

Al cargar el formulario se carga en el primer combobox un listado de productos, los cuales los filtra para que salgan solo productos únicos y evitar duplicados; dependiendo del dato seleccionados en este combobox se llena el segundo combobox a su vez de los datos seleccionados en el segundo combobox se buscan los datos y rellenan los textbox 1 a 6 tal cual se dijo anteriormente.

Tiene un aditamento, que es un combobox que se encuentra al final que permite modificar la fecha, aquí se debe agregar el nuevo dato y presionar el botón registrar, la macro busca el dato respectivo y agrega la fecha de entrega del producto correspondiente.

El vídeo que sigue muestra una explicación más detallada y gráfica de la macro presentada, recomiendo observar para una más fácil comprensión de la macro; suscribe a nuestra web desde la parte superior derecha de la página ingresando tu mail y a nuestro canal de You Tube para recibir en tu correo vídeos explicativos sobre macros interesantes, como  por ejemplo formulario que crea un listado de todas las hojas para poder luego seleccionarlasbuscar en listbox mientras escribes en textboxordenar hojas libro excel por su nombreconectar Excel con Access y muchos ejemplos más.

El ejemplo de macro que llena combobox dependiendo de otro combobox y a su vez controla los datos de varios textbox, se puede descargar desde el link del final de este post, una vez descargado el ejemplo se presiona el botón que dice «Ejecutar Macro» y se ejecuta la macro realizando el llenado del primer combobox, luego del segundo combobox en base a los seleccionado en el primer combobox; y luego se cargará en los textbox los datos correspondientes de ítem seleccionado.

Código que se inserta en un módulo

Sub Botón1_Haga_clic_en()
UserForm2.Show
End Sub

Public dir
Private Sub ComboBox1_Change()
Dim fila As Integer
Dim uf As Integer
Dim d1, d2 As String
fila = 2
uf = Sheets(«hoja2»).Range(«A» & Rows.Count).End(xlUp).Row
ComboBox2.Clear
While Sheets(«hoja2»).Cells(fila, 1) <> Empty
d1 = ComboBox1
d2 = Sheets(«hoja2»).Cells(fila, 1)
If d1 = d2 Then
ComboBox2.AddItem Sheets(«hoja2»).Cells(fila, 4)
End If
fila = fila + 1
Wend

End Sub
Private Sub ComboBox2_Change()
‘Evito movimientos de la pantalla
Application.ScreenUpdating = False
Dim fila, a As Integer
Dim dato, var As String
‘On Error Resume Next
‘Borra datos del listbox
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty

a = 0
fila = 2
‘Bucle mientras la fila no esté vacia
While Sheets(«hoja2»).Cells(fila, 4) <> Empty
dato = ComboBox2
‘Si el dato de la fila coincide con textbox carga los datos al listbox
var = Sheets(«hoja2»).Cells(fila, 4)
If var = dato Then
dir = Sheets(«hoja2»).Cells(fila, 4).Address(False, False)
‘Copia los datos en textbox

TextBox1 = Sheets(«hoja2»).Cells(fila, 1)
TextBox2 = Sheets(«hoja2»).Cells(fila, 2)
TextBox3 = Sheets(«hoja2»).Cells(fila, 3)
TextBox4 = Sheets(«hoja2»).Cells(fila, 4)
TextBox5 = Sheets(«hoja2»).Cells(fila, 5)
TextBox6 = Sheets(«hoja2»).Cells(fila, 6)
End If

‘Aumento la fila para que pase a la siguiente
fila = fila + 1
Wend

‘Devuelvo movimientos de la pantalla
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton2_Click()
If ComboBox3 = Empty Then
MsgBox («Debe cargar fecha de salida»), vbCritical, «AVISO»
ComboBox3.SetFocus
Exit Sub
End If
Sheets(«hoja2»).Range(dir).Offset(0, 2) = ComboBox3
ComboBox1.Clear
ComboBox2.Clear
ComboBox3.Clear
TextBox1 = Empty
TextBox2 = Empty
TextBox3 = Empty
TextBox4 = Empty
TextBox5 = Empty
TextBox6 = Empty
ComboBox1.SetFocus
MsgBox («El registro se guardó con éxito»), vbInformation, «AVISO»
End Sub

Private Sub CommandButton3_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Dim sd As New Collection
Dim celda As Range
Dim dato
Dim r As String
Dim uf As Integer
Application.ScreenUpdating = False
On Error Resume Next
ComboBox1.Clear
Sheets(«hoja2»).Select
Range(«A2»).Select
uf = Range(«A» & Rows.Count).End(xlUp).Row
r = «A2:A» & uf
For Each celda In Range(r)
sd.Add celda.Value, CStr(celda.Value)
Next celda
For Each dato In sd
ComboBox1.AddItem dato
Next dato
Application.ScreenUpdating = True
End Sub

Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.

Si te gustó por favor compártelo con tus amigos
If you liked please share it with your friends