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