Cargar un listbox por medio de matriz vba

Me gustaria conocer la manera de cargar una fila de una hoja de excel en un listbox pero que esa fila de la hoja quede cargada en el listbox en forma de columna por medio de una matriz de acuerdo a mis repasos por medio de matriz es menor en tiempo de carga por ejemplo la fila 1 de la hoja se cargue en la columna 2 del listbox lo buscado en la red no encuentro datos de este tema solo lo cargan por medio de matriz A--- a ---matriz B pero en una hoja no en una cuadro de control VBA

1 Respuesta

Respuesta
1

Ahondando más conocimiento después de tanto borrar pegar mover llegue a una solución para lo cual puede ser la base de inicio para alguien dejo el código solo es llenar una hoja con datos y en un formulario colocar un listbox un control de texto y colocar este código y saque su lógica ahora estoy con este mismo código implementarlo para que en un botón y otra caja de texto al colocar un dato numérico este me sume una columna del listbox sin necesidad de dar clic o registrar el dato en la hoja

Private Sub TextBox1_Change()
Dim txt1 As String, txt2 As String, txt3 As String
  Dim b As Variant
  Dim i As Long, j As Long, k As Long
a = Sheets(Hoja1.Name).Range("A1:XP" & Sheets(Hoja1.Name).Range("A" & Rows.Count).End(3).Row).Value
 ReDim b(1 To UBound(a, 1) * UBound(a, 2), 1 To 4)
  ' ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
ListBox1.Clear
  For i = 1 To UBound(a, 1)
    If TextBox1.Value = "" Then txt1 = a(i, 2) Else txt1 = TextBox1.Value
    If LCase(a(i, 2)) Like "*" & LCase(txt1) & "*" Then
      j = j + 1
      For k = 5 To UBound(a, 2)
       ''b(j, k) = a(i, k)
        If a(i, k) > 0 Then
           b(j, 1) = a(i, 2)
           'b(k, 2) = a(i, 3)
           b(j, 4) = a(i, k)
           b(j, 3) = a(1, k)
         j = j + 1
        End If
'        b(j, k) = a(i, k)
     Next
    End If
 Next i
 If j > 0 Then ListBox1.List = b
End Sub
Private Sub UserForm_Initialize()
Dim txt1 As String, txt2 As String, txt3 As String
  Dim b As Variant
  Dim i As Long, j As Long, k As Long
'a = Range("A3").CurrentRegion.Value
''ListBox1.ColumnCount = UBound(a, 1)
a = Sheets(Hoja1.Name).Range("A2:XP" & Sheets(Hoja1.Name).Range("A" & Rows.Count).End(3).Row).Value ' se carga todo en una matriz
'''Range("A" & Rows.Count).End(xlUp).Row
'ListBox1.ColumnCount = UBound(a, 2)
  With ListBox1
 .List = a ' la matriz queda cargada para mostrar
 .ColumnCount = 5 ''''UBound(a, 1) '"numero de  ccolumnas de la cantidad que hay en la matriz" numero de columna de la hojas amostrar puedo colacr el num de la columna
 .ColumnWidths = "50pt;80pt;80pt;50pt" 'columna 0  no se muestre y segunda columna con dimencion 20
 .ColumnHeads = True
End With
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas