Para Dante - Aumentar 1 columna en código
Estimado dante:
La siguiente macro filtra los datos en un listbox según el valor de un combobox, una ves filtrado seleccionamos un registro en el listbox para poder modificarlo.
Necesito añadirle una columna más a este código.
¿Cómo lo hago?
El filtro se hará solo con el combobox2 por tanto se puede quitar el combobox 1
Este código me funciona bien solo con 11 columnas, como lo modifico para que funcione con 12 columnas
Private Sub Actualizar_Click()
If ListBox1.ListIndex = -1 Then Exit Sub
f = ListBox1.List(ListBox1.ListIndex, 18)
r = ListBox1.ListIndex
Sheets("LVT").Range("A" & f) = (TextBox2)
Sheets("LVT").Range("B" & f) = Format(TextBox3, "mm/dd/yyyy")
For i = 4 To 12
Sheets("LVT").Cells(f, i - 1) = Controls("TextBox" & i)
Next
Call filtrar
ListBox1.ListIndex = r
End Sub
Private Sub ComboBox1_Change()
'Por.Dante Amor
filtrar
End Sub
Private Sub ComboBox2_Change()
'Por.Dante Amor
filtrar
End Sub
Private Sub ComboBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
KeyAscii = 0
End Sub
Private Sub ListBox1_Click()
'Por.Dante Amor
TextBox2.Text = (ListBox1.Column(0))
TextBox3.Text = CDate(ListBox1.Column(1))
For i = 4 To 12
Controls("TextBox" & i) = ListBox1.Column(i - 2)
Next
TextBox2.SetFocus
TextBox2.SelStart = 0
TextBox2.SelLength = Len(TextBox2)
End Sub
Sub filtrar()
'Por.Dante Amor
Set h1 = Sheets("LVT")
Set h2 = Sheets("tmp")
Set h3 = Sheets("PERIODOS")
'Application.ScreenUpdating = False
'
If h1.FilterMode Then h1.ShowAllData
h2.Range("A:S").Clear
per = ""
suc = IIf(ComboBox1 = "", "", Val(ComboBox1))
If ComboBox2 <> "" And ComboBox2.ListIndex > -1 Then
per = h3.Cells(ComboBox2.ListIndex + 1, "A")
End If
h2.Range("Y2") = suc
h2.Range("Z2") = per
'
u = h1.Range("A" & Rows.Count).End(xlUp).Row
h1.[S1] = "num"
h1.[S2] = 2
h1.[S3] = 3
If u > 3 Then
h1.Range("S2:S3").AutoFill h1.Range("S2:S" & u)
End If
'
h1.Range("A1:S" & u).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=h2.Range("Y1:Z2"), _
CopyToRange:=h2.Range("A1"), Unique:=False
'
ListBox1.ColumnCount = 19
ListBox1.ColumnHeads = False
ListBox1.ColumnWidths = "60;60;60;60;60;60;60;60;60;60;60;0;0;0;0;0;0;0;0"
If h2.Range("A2") <> "" Then
ListBox1.RowSource = "tmp!A2:S" & Sheets("tmp").Range("A" & Rows.Count).End(xlUp).Row
Else
ListBox1.RowSource = ""
End If
h1.Range("S:S").ClearContents
End Sub
Gracias