ComboBox2 dependiente de ComboBox1 desde planila excel

Hola

Mi pregunta es la siguiente:

Si tengo una planilla excel de compra con tres valores (Fecha"columna 1 de hoja"2, Producto"columna 2 de hoja"2 y Valor"columna 3 de hoja"2) y genero un userform que contiene dos ComboBox y un TextBox. En el ComboBox1 busca fechas desde la planilla y si son iguales muestra solo una, entonces el ComboBox2 debiera mostrar todos los productos de esa fecha o del mismo valor del ComboBox1 y buscarlos desde la misma planilla como un flitro y en TextBox1 indica el valor dependiendo del valor del ComboBox1 y del ComboBox2.-

y en otro userform quería que en el Combobox1 indicara un valor de fecha y sumara todos los valores de la tercera columna en un textbox

y el último es otro userform que busque un rango de fecha desde dos ComboBox

el primero es la fecha inicial y el otro fecha final que sume los valores de esas fechas.

No se si se puede en realidad pero he probado varias formas y ninguna me funciona.

Gracias.

1 Respuesta

Respuesta
1

Dame un mail y te mando un ejemplo construido

Ya te lo he mandado por mail

Recuerda finalizar y puntuar la consulta

muy buen ejemplo me sirvió mucho para una parte, pero tengo una duda si en vez de buscar en el primer formulario por fecha busco por producto tendría que quedar así

Private Sub ComboBox1_Click()
ListBox1.Clear
Dim producto As Long
producto = ComboBox1.Value
Set busca = Sheets("hoja4").Range("a2:a400").Find(producto, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ubica = busca.Address
Do
ListBox1.AddItem busca.Offset(0, 5)
i = ListBox1.ListCount - 1
ListBox1.List(i, 1) = busca.Offset(0, 3)
Set busca = Sheets("hoja4").Range("a2:a4000").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
For p = 0 To ListBox1.ListCount - 1
Suma = Suma + CDbl(ListBox1.List(p, 1))
Next
TextBox3.Value = Suma
End Sub
Private Sub CommandButton2_Click()
UserForm34.Hide
End Sub
Private Sub CommandButton3_Click()
End Sub
Private Sub Label10_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub TextBox6_Change()
End Sub
Private Sub UserForm()
Sheets("hoja4").Select
Range("a2").CurrentRegion.Sort key1:=Range("a2"), order1:=xlAscending, Header:=xlYes, ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a3").Select
Do While ActiveCell.Value <> ""
If InStr(valores, ActiveCell) = 0 Then
valores = valores & "," & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
valores = Mid(valores, 2, Len(valores) - 1)
valores = Split(valores, ",")
For X = 0 To UBound(valores)
ComboBox1.AddItem valores(X)
Next
End Sub

pro no me indica nada en el combobox1

En las líneas del SET tienes que cambiar el rango de búsqueda. Ahora no es en la columna A, será en la columna donde tengas los productos...

los productos están en la columna A, esta bien el dim como long

Entiendo que debieras poner: dim producto as string

¿El producto es un texto?

si es un texto, pero como es largo pensé que tal vez debiera ser long

dim producto as string

igual no muestra nada en el combobox1

Si estás trabajando sobre el archivo que te he enviado yo, tienes que cambiar también la macro del evento INITIALIZE que es la encargada de llenar el combobox1 del formulario 1 al arrancar el form.

Private Sub ComboBox1_Click()
ListBox1.Clear
Dim producto As String
producto = ComboBox1.Value

así quedo pero me da error de ejecucion

Set busca = Sheets("hoja4").Range("a2:a400").Find(producto, LookIn:=xlValues, lookat:=xlWhole)
If Not busca Is Nothing Then
ubica = busca.Address
Do
ListBox1.AddItem busca.Offset(0, 5)
i = ListBox1.ListCount - 1
ListBox1.List(i, 1) = busca.Offset(0, 3)
Set busca = Sheets("hoja4").Range("a2:a400").FindNext(busca)
Loop While Not busca Is Nothing And busca.Address <> ubica
End If
For p = 0 To ListBox1.ListCount - 1
Suma = Suma + CDbl(ListBox1.List(p, 1))
Next
TextBox3.Value = Suma
End Sub
Private Sub CommandButton2_Click()
UserForm34.Hide
End Sub
Private Sub CommandButton3_Click()
End Sub
Private Sub Label10_Click()
End Sub
Private Sub ListBox1_Click()
End Sub
Private Sub TextBox1_Change()
End Sub
Private Sub TextBox2_Change()
End Sub
Private Sub TextBox6_Change()
End Sub
Private Sub UserForm_Initialize()
Sheets("hoja4").Select
Range("a2").CurrentRegion.Sort key1:=Range("a2"), order1:=xlAscending, Header:=xlYes, ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a2").Select
Do While ActiveCell.Value <> ""
If InStr(valores, ActiveCell) = 0 Then
valores = valores & "," & ActiveCell
End If
ActiveCell.Offset(1, 0).Select
Loop
valores = Mid(valores, 2, Len(valores) - 1)
valores = Split(valores, ",")
For X = 0 To UBound(valores)
ComboBox1.AddItem valores(X)
Next
End Sub

Lo que sucede es que has variado mi ejemplo para conseguir otros objetivos que yo desconozco, por este motivo no lo veo con claridad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas