Listas dependientes combobox Excel VBA
HTML-код
- Опубликовано: 11 сен 2024
- Vincular dos combobox en unformulario usando programación vba.
Se carga las categorías en un combobox y al darle clic en una categoría se cargan los productos que le corresponden en otro combobox.
Si desean realizar una lista enlazada con 3 listas les comparto este video: • Enlazar multiples comb...
Fácil, sencillo y al grano. Te felicito, muy bien explicado.
Saludos.
Te felicito, muy buena explicación breve y precisa, gracias por tu aporte. Saludos desde Nicaragua.
Gracias
Gracias Bro. busque este tipo de combinaciones y solo cod. mostrosos que ni por cerca de lo que yo quería hacer. sigue así viejo te felicito por tu explicación y por este aporte. slds desde Managua Nic.
TE FELICITO Y AGRADEZCO!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! un diez
Excelente video, le agradezco por compartir sus conocimientos, me ha servido de mucho.
Práctico y sencillo del principio hasta el final!! Genio!!
Gracias
¡Muy bien explicado! Es un gran aporte.
gracias me dio idea para algo similar que tengo. muy bien explicado
Muy buenas tardes excelente video Profesor, muy bien explicado. Gracias por compartir
Chevere. Lo Maximo, super sencilla la explicacion y codigo
Excelente explicación. Muchas gracias.
Gracias mil gracias por el gran aporte con esta explicación muy buena y útil...
Genia.... Te felicito.
Muchas gracias, tuve que hacer unos arreglos con esas formulas para encontrar el numero de columnas y filas ocupadas, pero salio todo bien, gracias
muy bien explicado y funciona perfecto!!! gracias por compartir tus conocimientos.
Hola Cristian, Has mandado la información que sale en los combobox a una hoja de excel???? a Mí me da error en indiceCat = Combo_Grupo.ListIndex + 1 ---indicecat = 0
uFila = hList.Cells(Rows.Count, indiceCat).End(xlUp).Row
Quizas puedas contestar si has hecho algo diferente al ejemplo. Gracias
mira la verdad que hice lo que el pone en el video, solo adapte los nombres de las paginas y de los productos. aca ta paso lo que yo aplique. ahora pusiste los datos en el inicio del formulario que estas usando asi se precargan los datos del combobox1???
Private Sub ComboBox1_Change()
Dim indicecat As Integer
Dim ufila As Integer
indicecat = ComboBox1.ListIndex + 1
ufila = autos.Cells(Rows.Count, indicecat).End(xlUp).Row
ComboBox2.Clear
For j = 2 To ufila
ComboBox2.AddItem autos.Cells(j, indicecat).Value
Next j
End Sub
Gracias Cristian mis combobox no son 1 y 2 de mi formulario. Voy A hacer el cambio ojalá me funcione si no, seguiré registrando directamente en la hoja hasta que ponga al día la información para luego seguir investigando. Hasta luego gracias
mira otra cosa que me paso, fue que estaba haciendo conflicto con otras cosas. tuve que volver a programar varias partes de mi formulario pero quedo todo funcionando. ademas no soy un experto en el tema.suerte
Gracias por tu tiempo ya veré si funcionan los cambios
muy buen aporte y el codigo bastante corto y entendible, saludos
Excelente Tutorial
Gracias, espero que te haya sido muy útil.
gracias nuevamente maestro
Gracias Profesor por compartir, muy claro el ejemplo. He realizado este ejercicio y indicecat sem muestra en el msgbox correcto , pero al mandar la información a la hoja de datos en excel me sale error 1004, error definido por la aplicación o el objeto. Sería de gran ayuda me diga que puede ser y como solucionarlo. Muchas gracias
Excelente video, por favor podrás explicar como limpiar los campos del formulario.
Hola, los campos del formulario se limpian igualandolo a vacios, de la siguiente manera. Textbox1.text=""
Me sirvió mucho, muchas gracias fuiste claro
Muchas gracias por el vídeo, he acoplado los código a un proyecto y funciona bien, aunque cambiando el segundo Combobox por un listbox.
Ahora me gustaría saber cómo hacer para introducir productos en las columnas dependiendo del valor que tengamos en el primer Combobox.
Debes agregar los valores igual q un combobox.
Geniooo!!!!
dilculpe estoy ahiendo lo que dice en el video pero en el momento de aplastar f5 para ver el numero de celdas me sale erro que debo hacer???
xfavor respondame
hola muy buen tuto . pero tengo un problema .existe algun codigo para que cuando llene el combo
no muestre repetidos o hay que filtrar antes.muchas gracias
excelente viejo
WAOOOOOOOOOOOOO te pasastes , me salvastes de una.grxs
Pau si nesecitas alguna ayuda tengo algo parecido a lo que diseño el Profesor ... estamos para ayudar
grxs cualquier cosa t paso la voz...bechos
hola, una pregunta, como puedo hacer un formulario con 8 cuadros combinados a modo de base de datos con 1 textbox e imágenes? , saludos!
otra pregunta porque en esta instrucion IndiceEst =Me.cmb_estilo.ListIndex + 1 no actualiza el valor de la variable, enlos 3 casos debo usarlo asi UltFila = C.Cells(Rows.Count, IndiceEst + 1).End(xlUp).Row
Me.cmb_cantante.AddItem C.Cells(X, IndiceEst + 1).Value
Buenas noches, muy bueno el vídeo y la explicación. Mi inquietud, que tan dispendioso sería ademas de la utilidad de los dos combobox enlazados, poder modificar, eliminar o ingresar nueva información, al archivo con el mismo formulario. Mil Gracias!!!
Buenas noches, estupendo!! Yo tengo una pregunta, como se puede hacer para multiplicar ese combobox anidado? Me explico. Quiero que se pueda elegir en un mismo documento x veces el mismo desplegable ... Esa repetición de desplegables con el cambio de nombre del combobox como se hace? Lo he intentado modificando el nombre y me da error...hay alguna solución válida?? Gracias
amigo en el momento de ejecutar la macro abre el primer lisbox luego lo muestra y detiene todo
Hola.Interesante tu video, pero tengo una duda. Tengo una hoja excel con datos similares a los que muestras en el video, sólo que mis categorías están en vertical. Es decir, en columna A, tengo Congelados, Dulces, Panadería, Carnes...todos hacia abajo. Junto a cada categoría, la subcategoría.Verduras, Frutas Hamburguesas..(en Congelados) y así en cada categoría. Cada subcategoria, tiene hacia abajo, los productos que contiene. La idea, es que ComboBox1, muestre Categorias. ComboBox2, Subcategorías y ComboBox3, los respectivos productos, los que además, al clicarlos, quiero que me envíe a una dirección html. Gracias por leer.
☺☺☺Show!!!
Si quisiera filtrar la columna antes de cargarla al combo para que no tenga elementos repetido como puedo lograr estoy?
Hola Estimado Profesor. Excelente Video.
Pregunta: como seria si agregamos un tercer combobox dependiendo del segundo?
Gracias
De esta manera solo soportará 2 combobox. Fíjate en mi canal hay otro vídeo con 3 combobox.
hola quiero trabajar con varios combobox pero al seleccionar 3 no se me ejecuta podrías hacer una clase haciendo el uso de varios combobox,muchas gracias
Hola Buenas tardes te hago una pregunta , tengo espacios en blanco en el segundo combobox por el orden que tienen en las columnas ¡como hago para que no apraezcan esos espacios en blanco. Muy bueno el Video
Hola, dentro del for debes agregar una validacion para que no se carguen los valores en blanco:
if combobox1.value"" then
'aqui pones tu codigo de carar datos
end if
@@maihuire11 Hola gracias por la pronta repuesta, te comento agregue la validacion pero mede ja una sola seleccion y en blanco.
For j = 2 To uFila
If cboproducto.Value "" Then
cboproducto.AddItem hprod.Cells(j, indiceCat).Value
End If
Next j
End Sub
@@Mateo28P hola debes decirme cuál es el combobox dónde darás clic y el combobox dónde cargaras los valores porque veo que estás usando cboproducto en el kg y para cargarlo.
@@maihuire11 Hola, te dejo abajo el codigo
Dim hprod As Worksheet
Private Sub cboCategoria_Change()
Dim indiceCat As Integer, uFila As Integer
indiceCat = cboCategoria.ListIndex + 1
uFila = hprod.Cells(Rows.Count, indiceCat).End(xlUp).Row
cboproducto.Clear
For j = 2 To uFila
'If cboproducto.Value "" Then
cboproducto.AddItem hprod.Cells(j, indiceCat).Value
'End If
Next j
End Sub
Private Sub CommandButton2_Click()
If cboproducto = Empty Then
MsgBox ("Se requiere que seleccione un nombre"), vbCritical, «AVISO»
cboproducto.SetFocus
Exit Sub
End If
Sheets("CONTROL").Cells(8, 1) = cboproducto
Unload Me
Sheets("CONTROL").Select
End Sub
Private Sub UserForm_Initialize()
Dim nCol As Integer
Set hprod = Worksheets("AUXILIAR")
nCol = hprod.Cells(1, Columns.Count).End(xlToLeft).Column
cboCategoria.AddItem ("Codigos")
cboCategoria.AddItem ("Nombres")
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Hola me gusto mucho tu video y te agradezco por tus enseñanzas y el tiempo que te tomas en beneficio de todos nosotros. con respecto a este me presenta un error. Todas las instrucciones trabajan bien al hacer carga de los combobox viniculados pero me aparece el error 1004 > y este error me aparece cuando trato de enviar la información a mi hoja de calculo al oprimir el CommandButton para aceptar y enviar toda la información contenida en mi userform. Tenia : Hoja1.cells(Final, 5) = Combobox4.Text, ya lo cambie a .Value y sigue el mismo error. Podriamos ayudarme y poder pasar de mi userform la información de mi Hoja de calculo. Te aclaro que antes de las fomulas yo tenia que llenar los 2 combobox con tablas dinamicas y si podia pasar la información, lo que no hacia era que de un producto me seleccionara los subproductos. Te agradezco de antemano por tu ayuda
BUENOS DÍAS. ESTOY REALIZANDO UN FORMULARIO EN VB CUYOS DATOS ESTÁN EN UNA HOJA DE EXEL. Y NECESITO CARGARLOS A UN LISTBOX Y UN TEXTBOX. EL PROBLEMA ES QUE LOS DATOS ESTÁN SEPARADOS EN DIFERENTES CELDAS POR EJEMPLO: EL CÓDIGO ESTA EN 4 CELDAS Y DEBE CARGARSE EN EL LIXTBOX Y TEXTBOX UNIDO Y SEPARADO POR PUNTOS Y UN GUION: 2.08.03-67548. Y EL NOMBRE COMPLETO DE LA PERSONA ESTA TAMBIÉN SEPARADO EN 4 CELDAS Y DEBE CARGARSE UNIDO. POR FAVOR AYUDAME Y SI ME DAS UN CORREO TE ENVÍO LO QUE HE HECHO HASTA AHORA PARA QUE LO ANALICES, GRACIAS...
Deberias Concatenar tu y luego cargarlo a tu listbox.
Buenos días, primero para felicitarte por la didáctica de tu vídeo, es muy rápido de entender. Pero tengo un problema, hice tal cual está en en el vídeo pero me muestra este mensaje: Se ha producido el error '1004' en tiempo de ejecución: Error definido por la aplicación o el objeto. Y cuando doy clic en DEPURAR, me señala la siguiente línea del código: Ufila = Hprod.Cells(Rows.Count, IndiceCat).End(xlUp).Row. Espero que puedas ayudarme.
Me pasaba lo mismo. La solución fue hacerlo paso a paso Luego de esta linea IndiceCat = DEPT.ListIndex + 1 colocar la linea msgbox IndiceCat, correr la macro y verificar que me sale un mensaje con el número de la columna de la categoria que elegi. Luego escribi todas las lineas y funcionó.
Estuve buscando un ejercicio de este tipo, pero no mefuncionaba porque tenia una columna intermedia entre tablas y la instrunccion IndiceCat= CmbCategoria.listIndex+1 no me funcionaba porque no pude deducir cuanto tenia que incrementarle, pero logre darle otro enfoque al ejercicio y lo resolvi de otra manera
Hola, q bueno que lo hayas solucionado.
como puedo enlazarlo a una imagen dependiendo d elo que eliga
Hola profe, es posible desplegar un combobox basándose en el resultado seleccionado del primer combobox unicamente por código, sin utilizar las hojas del excel?
Me explico, estoy realizando una cotización de alimentos y entre las opciones del ComboBox1 están "Dos carnes calientes" y "Carne caliente y carne fría"
Entonces necesito que;
Si selecciono "Dos carnes calientes" en el ComboBox2 aparezca las opciones;
"Lomo de cerdo"
"Lomo de res"
Pero si selecciono "Carne caliente y carne fría" aparezca en el ComboBox2 las opciones;
"Jamón de cerdo"
"Lonja de pavo"
Todo lo anterior pero sin usar las hojas de excel para crear las listas...
Es posible? Gracias de antemano
@@stevenpuentes1077 Hola, claro que puedes hacerlo, te pongo el código :
ComboBox2.Clear 'Limpia el combobox antes de agregar los valores
if ComboBox1.value="Dos carnes calientes" then
Combobox2.AddItem "Lomo de cerdo"
Combobox2.AddItem "Lomo de res"
else
Combobox2.AddItem "Jamon de cerdo"
Combobox2.AddItem "Lonja de pavo"
endif
@@maihuire11 Coloco ese mismo código y no me aparece la condición en cada lista.... Será que estoy colocando algo mal?
@@maihuire11 Justo un código parecido coloqué pero ninguno de los dos me funciona, mira...
Private Sub UserForm_Activate()
tipomenu.AddItem "Dos carnes calientes"
tipomenu.AddItem "Una carne fria"
carne1.Clear 'Limpia el combobox antes de agregar los valores
If tipomenu.Value = "Dos carnes calientes" Then
carne1.AddItem "Lomo de cerdo"
carne1.AddItem "Lomo de res"
Else
If tipomenu.Value = "Una carne fria" Then
carne1.AddItem "Jamon de cerdo"
carne1.AddItem "Lonja de pavo"
End If
End If
End Sub
saludos, un consulta
porque te acepta la variable i sin ingresarla como variable.
xq. no es obligatorio declararlo.
Hola, una pregunta por qué no se pueee agregar componentes desde vba y en visual normal si? Lo pregunto porque yo manejo un combo con varias columnas y quieeo agregarlo para usarlo desde excel con macros y no me deja , pero desde visual basic 6.0 si me deja
Hola, si puedes agregar controles a excel, en la ficha programador en el grupo controles hay la opcion Insertar, desde alli puedes insertar un combobox normal y activex.
@@maihuire11 sigueme: si estas en excel y abres vba e insertas un formulario este te activa un cuadro de herramientas cierto? El tiene controles por defecto pero si yo quiero agregar mas controles a esta barra no me deja.. cual es mi necesidad hace muchos años programe en vb 6.0 y viendo tu curso de excel avanzado me di cuenta que puedo trabajar con excel y vba así que tengo mucho camino ahorrado por allí el tema es que siempre trabajé con controles adicionales y no me deja agregarlos pero desde vba en vb normal no tengo problemas
Tienes un correo para enviarte con detalles lo que hago en vb y no puedo hacer en vba?
Error 1004 al momento de registrar los datos. alguien pudo solucionar??
Mensaje de error 1004, aparentemente en esta parte del código: UFila = hconsult.Cells(Rows.Count, IndiceCat).End(xlUp).Row
habrá que declarar otra variable? Esa global parece no funcionarme
Yamil Lopez cuando te sale el error te sombrea de color amarilo el codigo. Esa linea fue?
Cursoslab Si le doy en depurar me dirige a esa línea de código, se pone amarillo si le doy click derecho a la flechita que me apunta a esa línea
Yamil Lopez deberias declarar Ufila de esta manera. Ufila as integer
Hola compañero! gracias por tu aporte! tengo una consulta, el código me funciona perfecto, hasta que coloco aceptar y me tira una error 1004 en tiempo de ejecución. error definido por la aplicación u objeto. Si te parece te envío mi código a un mail para que lo veas. gracias por tus aportes son de gran ayuda!!!
por lo que veo tengo problemas con la variable indicecat
tengo el mismo error, pudiste solucionarlo?
Mismo error... alguna solución?
ME SALE ERROR 1004 CUANDO REGISTRO LOS DATOS A LA HOJA DE CALCULO
y que me gano con esto o que, mas bien como le hago para que esta informacion se vaya a otra lista de cada producto que agregue, o se vayan a una celda en especifico de otra hoja de excel.
Saludos amigo cuando trato de ejecutar me aparece un error 1004 y no se ejecuta el cuadro por favor como reparo eso tengo Excel 2019
Hola cuando te sale ese error te sombrea de color amarillo donde ocurre el error, dime cual es ese codigo.
@@maihuire11 Hola ese error me sale al principio cuando usted coloca el msgbox ncol y me dice "Se ha producido el error 1004 en tiempo de ejecución. Error definido por la aplicación o el objeto" ese es el error
hola
tengo toda la macro bien realizada, pero al ejecutarse en la linea; ufila=hprod.cells(rows.count,indicecat).end(xlup).row me frena que error tuve por favor ayúdame
hola! yo tengo mis código que en esa misma linea me genera el error 1004, pudiste solucionarlo?
hola no me toco utilizar otro método
si quieres
carlos03arango @gmail.com te lo paso
perfecto! mil gracias! ya te mando un mail.
Hola, tengo el mismo problema, me puedes ayudar?
Maestro, gracias por el tutorial, es el mejor explicado. Pero a mi no me funciona, uso Excel 2016. Dado que quise implementarlo a un proyecto y no pude, hice una planilla nueva desde cero utilizando 3 columnas de categorias al azar (inmuebles, vehiculos, productos) y algunos ejemplos en sus filas, le puse el nombre Productos a la hoja, todo esto para copiar EXACTAMENTE lo que se ve en tu video y repasando minuciosamente cada codigo ingresado por renglón y sus espacios. En resumen, no me está funcionando a mi, por que será ? El unico codigo que me toma para tomar las primeras palabras de las que serían CATEGORIAS, es este que encontré por ahi, pero me interesa tu código ya que si alguien agrega un producto, adiciona automatico al formulario, espero que puedas ayudarme a resolver.
Application.ScreenUpdating = False
Sheets("B").Select
Range("A1").Select
While ActiveCell Empty
grupocta.AddItem ActiveCell
ActiveCell.Offset(0, 1).Select
Wend
Envíame tu archivo y te lo corrijo si es importante para ti......jramosq580@hotmail.com
el error que me muestra es 424 gracias
Hola, en que momento te muestra ese error?
d
awa
y si yo quiero que salga el precio
Estimado, eso ya sera motivo para otro video, voy a subir una serie de videos de un sistema de ventas la proxima semana.
Saludos
gracias
Sale el siguiente error: 424 en tiempo de ejecucion, lo trabaje tal cual el video
Ya corregir el error sin embargo al escoger el primer item de mi lista salen todos los productos, cuando selecciono recien desde la opcion se carga correctamente. Cuando vuelvo a seleccionar el primer item de categorias carga todos los productos
Buenas! ¿Como corregiste el error?
De antemano, gracias!
Ricardo tengo el mismo error un favor me podras indicar como lo solucionaste
Gracias. saludos
debes declarar las variables al inicio de la macro
Ricardo Gallardo si estoy declarando la variable hprod como indica el video o hay q declarar otra variable mas
porqueria de video solo hace perder tiempo
Excelente vídeo y explicación
ME SALE ERROR 1004 CUANDO REGISTRO LOS DATOS A LA HOJA DE CALCULO
Hola, cual es la linea de codigo donde te sale error?
@@maihuire11 Hola, me ocurre lo mismo, es en la linea --> uFila2 = hprod.Cells(Rows.Count, IndiceCat).End(xlUp).Row
@TutorialesLAB cuando en el formulario presiono en el botón registrar que envía los datos a una tabla