Cómo almacenar de listbox a hoja2

Tengo un formulario en el cual agrego mis ventas con un boton y se almacenan en el listbox, posteriormente se guardan en la hoja de "ventas" pero quisiera saber como hacerle para que antes de almacenar los datos me los copie en la hoja2 para imprimir el ticket con el formato que tengo.

Ejemplo. Vendo un refresco, le doy clic y se almacena en el list box

Cuando de clic botón vender. Copie el dato de la venta en la hoja 2 y al mismo tiempo lo almacene en la hoja ventas. Les copio el código que tengo. Saludos y muchas gracias.

Private Sub CommandButton5_Click()
'Guardar compra en tabla
Dim i As Variant
Dim j As Variant
Dim TransRowRng As Range
Dim NewRow As Integer
With VENTAS
    '
    For i = Me.ListBox1.ListCount To 1 Step -1
        '
        Set TransRowRng = ThisWorkbook.Worksheets("VENTAS").Cells(1, 1).CurrentRegion
        NewRow = TransRowRng.Rows.Count + 1
        .Cells(NewRow, 1).Value = Date
        .Cells(NewRow, 2).Value = Me.txtConsec.Value
        '
        For j = 0 To 4
            '
            .Cells(NewRow, j + 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - i, j)
            '
        Next j
        '
    Next i
    '
End With
Unload Me
End Sub

1 Respuesta

Respuesta
1

H o l a:

No pusiste cuál es el rango de celdas o cómo es tu formato de ticket.

Traté de hacerlo flexible, solamente escribe en esta línea de la macro el rango de la hoja2 en donde quieres que se pongan los dato:

Set r2 = h2.Range("C7:G20")


La macro completa.

Private Sub CommandButton5_Click()
'Guardar compra en tabla
    Dim i As Variant
    Dim j As Variant
    Dim TransRowRng As Range
    Dim NewRow As Integer
    With VENTAS
        '
        For i = Me.ListBox1.ListCount To 1 Step -1
            '
            Set TransRowRng = ThisWorkbook.Worksheets("VENTAS").Cells(1, 1).CurrentRegion
            NewRow = TransRowRng.Rows.Count + 1
            .Cells(NewRow, 1).Value = Date
            .Cells(NewRow, 2).Value = Me.txtConsec.Value
            '
            For j = 0 To 4
                '
                .Cells(NewRow, j + 3).Value = Me.ListBox1.List(Me.ListBox1.ListCount - i, j)
                '
            Next j
            '
        Next i
        '
    End With
    '
    'Pasar información al ticket (Hoja2)
    'Por.Dante Amor
    '
    Set h2 = Sheets("Hoja2")
    Set r2 = h2.Range("C7:G20")
    r2.ClearContents
    col = r2.Cells(1, 1).Column
    fila = r2.Cells(1, 1).Row
    For i = 0 To ListBox1.ListCount - 1
        For j = 0 To 4
            h2.Cells(fila, col) = ListBox1.List(i, j)
            col = col + 1
        Next
        col = r2.Cells(1, 1).Column
        fila = fila + 1
    Next
    '
    'Fin.Por.Dante Amor
    '
    Unload Me
End Sub

Supongo que tienes que llenar otros datos en el ticket, entonces, solamente utiliza el objeto h2, por ejemplo si quieres poner la fecha en la hoja2 en la celda H3:

h2.[H3] = Date

Disculpe la molestia, que variables debo colocar, me aparece Error de compilación: No se ha definido la variable.

Coloque estos, y me funciono, ¿esta bien y serán los más indicado?

Dim h2 As Variant
Dim r2 As Variant
Dim col As Integer
Dim fila As Integer

H o l a:

En VBA no es necesario declarar las variables, VBA declara en automático todas las variables como tipo variant.

Así que puedes quitar la instrucción Option Explicit

Sólo en en algunos casos es necesario declarar las variables; o en el caso de que tu código sea muy extenso y de esa forma no te equivoques en los nombres de las variables, o para optimizar la memoria cuando estás ocupando mucha memoria en tu proceso.

Para este caso no es tan necesario.

De cualquier forma, podría ser así:

    Dim h2 As Worksheet
    Dim r2 As Range
    Dim col As Long
    Dim fila As Long

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas