Listbox dependientes

Hola vorkosigan te escribe Hernán Camilo Martinez, desarrollo Macros en Excel necesito lo siguiente por fa:
Tengo dentro de una hoja en excel los siguientes registros :
Bitmap CLAVE Casa Blanca
Proyecto A Casa Blanca
Capítulo 1 Actividades Preliminares
Análisis 1,10 Cerca de alambre púa y tabla
Insumo 23 Arena de peña
Insumo 26 Arena de revoque
Capítulo 2 Decapote - retiro
Análisis 2,10 Cerca de alambre púa y tabla
Análisis 2,20 Retiro
En un listbox llamado (ListBox1) que tengo dentro de una UserForm filtro los capítulos
es decir que dentro del listbox1 aparecen "Actividades Preliminares" y "Descapote- retiro"
Lo que deseo es que al dar clic sobre Actividades preliminares me muestre los Análisis en un listbox2 que tengo dentro de la misma Userform para ese caso seria que me muestre dentro de la ListBox2 "Cerca de alambre púa y tabla"... Y que al dar clic sobre el registro que esta dentro del listbox1 llamado "Decapote-retiro" me muestre dentro del listbox2 "Cerca de alambre púa y tabla" y "Retiro".
Tengo el siguiente código pero no me sale bien:
Dim i, j As Integer
Dim k, l
Dim r
j = 1
i = 1
Dim item As Long
For i = 1 To 1000
TextBox10.Text = Cells(i, j)
For k = ListBox1.Selected(i) To ListBox1.Selected(i + 1)
If Cells(i, j) = "Análisis" Then
'Me.ListBox2.Value = Cells(i, j + 4)
ListBox2.AddItem (Cells(i, j + 4))
End If
Next k
Next i
Gracias, por tu ayuda!

1 Respuesta

Respuesta
1
Prueba con este código:
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim fil As Integer
Dim capitulo, analisis, item As String
'borro el listbox2 antes de cargarlo
ListBox2.Clear
'capturo el numero de capitulo que corresponde
'al item seleccionado
capitulo = (ListBox1.ListIndex + 1)
'cargo el listbox2
For fil = 1 To 20
  analisis = "Análisis " & capitulo
  'si el item contiene una coma asumo que es un análisis
  If InStr(Cells(fil, 1), ",") <> 0 Then
    'extraigo la parte del item que hace referencia al nº de analisis
    item = Left$(Cells(fil, 1). Value, InStr(Cells(fil, 1), ",") - 1)
    'comparo el item con el valor seleccionado del listbox1
    If item = analisis Then ListBox2.AddItem (Cells(fil, 2).Value)
  End If
Next
End Sub
Private Sub UserForm_Activate()
Dim fil As Integer
Dim entrada As String
'cargo el listbox1 con los items de la columna 1
'que empiecen por 'Capitulo'
For fil = 1 To 1000
  If Left$(Cells(fil, 1).Value, 8) = "Capítulo" Then ListBox1.AddItem (Cells(fil, 2).Value)
Next
End Sub
Ya me dirás cómo te fue.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas