No limpiar check de listbox al filtrar
Para Dan
Hola sabes que tengo un inconveniete con el codigo que no he podido arreglar..
Tengo un listbox
Un textbox "Textbox5" que es para ir escribiendo y filtrar el listbox y tengo un textbox "Textbox1" que al seleccionar un check del listbox los nombres se copian al textbox "Textbox1"...
Problema..
Ejemplo
Al iniciar el userform se cargan los datos selecciono un check y este se copia al textbox1 .. Pero si quiero buscar en el textbox5 este filtra el listbox y selecciono un check "y es aqui el problema que el check anterior se borra dado que filtre y el codigo de filtro limpia antes de buscar" entonces al seleccionar un check es como si fuese el primero que selecciono y no deberia ser asi si antes he seleccionado uno...
¿Por favor me echas una mano con esto?
No se si me explique bien
Adjunto el codigo " la parte de ir selecionando los check y copair al textbox1 eso lo hicistes tu la otra vez""
Private Sub CommandButton1_Click()
Application.Visible = True
End Sub
Private Sub Lista_Change()
tnum = 1 'Número de textbox
wmax = 7 'límite por textbox
n = 0
t = 1
'
For i = 1 To tnum
Me.Controls("TextBox" & i) = ""
Next
For i = 0 To Lista.ListCount - 1 'Step -1
If Lista.Selected(i) Then
If n = wmax Then
n = 0
t = t + 1
If t > tnum Then
MsgBox "Se alcanzó el número máximo de textbox", vbExclamation
Exit Sub
End If
End If
If Me.Controls("TextBox" & t) = "" Then
Me.Controls("TextBox" & t) = Lista.List(i, 2)
Else
Me.Controls("TextBox" & t) = Me.Controls("TextBox" & t) & " ; " & Lista.List(i, 2)
End If
n = n + 1
End If
Next
End Sub
Private Sub TextBox5_Change()
Me.Lista.Clear
If Trim(TextBox5.Value) = "" Then
Lista.List() = Range("A2:C" & Range("A" & Rows.Count).End(xlUp).Row).Value
Exit Sub
End If
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
cadena = UCase(Cells(i, 1).Value) & UCase(Cells(i, 2).Value) & UCase(Cells(i, 3).Value)
If cadena Like "*" & UCase(TextBox5.Value) & "*" Then
Lista.AddItem Cells(i, 1)
Lista.List(Lista.ListCount - 1, 1) = Cells(i, 2)
Lista.List(Lista.ListCount - 1, 2) = Cells(i, 3)
End If
Next i
Exit Sub
Errores:
MsgBox "No se encuentra.", vbExclamation, "EXCELeINFO"
End Sub
Private Sub UserForm_Initialize()
Lista.Clear
With Lista
.ColumnCount = 3
.ColumnWidths = "60 pt;160 pt; 70 pt"
End With
Lista.List() = Range("A2:C" & Range("A" & Rows.Count).End(xlUp).Row).Value
End Sub