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

1 respuesta

Respuesta
1

Me puedes explicar en dónde quieres la columna, es decir, en la hoja, ¿en el formulario?

El código funciona bien cuando la hoja tienen 11 columnas y el listbox también

Ahora mi hoja tiene 12 columnas al igual que mi listbox

Podrías detallarme cuál hoja

No estoy entendiendo bien lo que necesitas, el listbox tiene 17 columnas

¡Gracias!

Ya lo resolví

Gracias

Qué bien!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas