Visual Basic para Aplicaciones - Problema con Impresión de ListBox

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil

Problema con Impresión de ListBox

Publicado por Jose (3 intervenciones) el 16/12/2021 05:03:25
Buenas noches foristas.
Estoy teniendo un problema para imprimir el ListBox.
Me explico.
En el FrmHistorico tengo la opción de hacer un filtro entre fechas y quiero que ese resultado que se muestra en el ListBox (LstHistorico) me lo imprima. Un amigo me dio un código que él usa en uno de sus proyectos para que yo lo adecuara al mío, pero no he podido hacerlo.
Serían tan amables de ayudarme con este tema.
Gracias de antemano.
Saludos cordiales
JIPM

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Private Sub BtnImprimirFiltros_Click()
Dim h As Worksheets
Dim I As Integer
Dim u As Integer
 
 
Set h = Sheets("imprimir")
h.Cells.Clear
h.Range("A1:V1") = Array("CODIGO", "NOMBRE Y APELLIDOS", "C.IDENTIDAD", "C/O", "DPTO", "OCUPACIÓN", "TIPO PRE-NOMINA", "SEXO", "SALARIO B", "TIEMPO", "HORAS", "F", "D", "N", "A", "SALARIO R", "X", "NOCT.", "BON.", "SOBRE C.", "PAGADO", "FECHA")
For I = 0 To LstHistorico.ListCount - 1
h.Cells(I + 2, "A") = LstHistorico.List(I, 0)
h.Cells(I + 2, "B") = LstHistorico.List(I, 1)
h.Cells(I + 2, "C") = LstHistorico.List(I, 2)
h.Cells(I + 2, "D") = LstHistorico.List(I, 3)
h.Cells(I + 2, "E") = LstHistorico.List(I, 4)
h.Cells(I + 2, "F") = LstHistorico.List(I, 5)
h.Cells(I + 2, "G") = LstHistorico.List(I, 6)
h.Cells(I + 2, "H") = LstHistorico.List(I, 7)
h.Cells(I + 2, "I") = LstHistorico.List(I, 8)
h.Cells(I + 2, "J") = LstHistorico.List(I, 9)
h.Cells(I + 2, "K") = LstHistorico.List(I, 10)
h.Cells(I + 2, "L") = LstHistorico.List(I, 11)
h.Cells(I + 2, "M") = LstHistorico.List(I, 12)
h.Cells(I + 2, "N") = LstHistorico.List(I, 13)
h.Cells(I + 2, "O") = LstHistorico.List(I, 14)
h.Cells(I + 2, "P") = LstHistorico.List(I, 15)
h.Cells(I + 2, "Q") = LstHistorico.List(I, 16)
h.Cells(I + 2, "R") = LstHistorico.List(I, 17)
h.Cells(I + 2, "S") = LstHistorico.List(I, 18)
h.Cells(I + 2, "T") = LstHistorico.List(I, 19)
h.Cells(I + 2, "U") = LstHistorico.List(I, 20)
h.Cells(I + 2, "V") = LstHistorico.List(I, 21)
 
Next I
 
u = h.Range("A" & Rows.Count).End(xlUp).Row
If u = 1 Then
MsgBox "No hay registros a imprimir"
Else
h.PrintOut Copies:=1, Collate:=True
End If
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con Impresión de ListBox

Publicado por Antoni Masana (498 intervenciones) el 16/12/2021 15:52:55
En principio esto hace exactamente lo mismo pero un poco más rápido y mejor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Private Sub BtnImprimirFiltros_Click()
    Dim h As Worksheets, I As Integer, u As Integer, A as >Byte
 
    Set h = Sheets("imprimir")
    With h
        .Cells.Clear
        .Range("A1:V1") = Array("CODIGO", "NOMBRE Y APELLIDOS", "C.IDENTIDAD", _
                                 "C/O", "DPTO", "OCUPACIÓN", "TIPO PRE-NOMINA", _
                                 "SEXO", "SALARIO B", "TIEMPO", "HORAS", "F", "D", _
                                 "N", "A", "SALARIO R", "X", "NOCT.", "BON.", _
                                 "SOBRE C.", "PAGADO", "FECHA")
        For I = 0 To LstHistorico.ListCount - 1
            For A = 1 to 22
                .Cells(I + 2, A) = LstHistorico.List(I, A - 1)
            Next
        Next I
 
        u = .Range("A" & Rows.Count).End(xlUp).Row
        If u = 1 Then
            MsgBox "No hay registros a imprimir"
        Else
            .PrintOut Copies:=1, Collate:=True
        End If
    End With
End Sub

Ahora viendo el código veo más o menos lo que hace pero no lo que quieres que haga.
Para saber qué es lo que no funciona se necesita saber que debe hacer y poder probarlo por lo que es necesario:
- El libro con datos
- Explicar que se quiere conseguir con la macro o que se pretende que haga la macro.


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con Impresión de ListBox

Publicado por Jose (4 intervenciones) el 16/12/2021 16:11:38
Buenos días a todos los miembros del Foro.
Buenos días Antoni, espero se encuentre bien de salud usted y su familia. Qué placer volver a tenerlo por acá.
Mire Profesor. Yo estoy registrado al Foro, pero todo parece indicar que algo no está funcionando bien, porque cuando intenté subir mi archivo, me dijo que debía registrarme y ya lo he hecho desde un principio....
Lo que necesito es que en ese ListBox que se deben mostrar alrededor de 400 o 500 registros (puede ser que yo pida una información trimestral o semestral) yo pueda a través de un botón poder imprimirlo (en papel o .pdf). Tiene 21 columnas.
Esa macro me la dio un amigo que él la usa en su proyecto para que yo la adecuara al mío, pero por más que traté no pude. Realmente no entendí bien el código, de hecho no se que es el +2 [h.Cells(I + 2, "A")] en las líneas... por eso es que pedí ayuda. Sería bueno que ese reporte lo enviara a una hoja y después de impreso la elimine... He visto que se puede hacer, pero no se cómo.
Ahora pude adjuntar mi archivo, espero le sea más fácil.
Un saludo.
Con todo respeto.
JIPM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con Impresión de ListBox

Publicado por Antoni Masana (498 intervenciones) el 16/12/2021 21:11:43
La rutina que no te funcionaba es esta.
El problema es que tenias la hoja Imprimir oculta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub BtnImprimirFiltros_Click()
    Dim I As Integer, u As Integer, A As Byte, Cabecera
 
    Cabecera = Array("CODIGO", "NOMBRE Y APELLIDOS", "C.IDENTIDAD", _
                                 "C/O", "DPTO", "OCUPACIÓN", "TIPO PRE-NOMINA", _
                                 "SEXO", "SALARIO B", "TIEMPO", "HORAS", "F", "D", _
                                 "N", "A", "SALARIO R", "X", "NOCT.", "BON.", _
                                 "SOBRE C.", "PAGADO", "FECHA")
    With Sheets("Imprimir")
        .Visible = True
        .Cells.Clear
        For A = 1 To 22
            .Cells(1, A) = Cabecera(A - 1)
        Next
 
        For I = 0 To LstHistorico.ListCount - 1
            For A = 1 To 22
                .Cells(I + 2, A) = LstHistorico.List(I, A - 1)
            Next
        Next I
 
        u = .Range("A" & Rows.Count).End(xlUp).Row
        If u = 1 Then
            MsgBox "No hay registros a imprimir"
        Else
            .PrintOut Copies:=1, Collate:=True
        End If
    End With
    Sheets("Imprimir").Visible = False
End Sub

Cuando ejecuto el UserForm me sale varios PopUp que dice: No se puede ejecutar código en modo interrupción
Supongo que debe ser un problema de mi Excel.
He intentado seguir el rastro de lo que hace y me he perdido, al principio he creído que se metía en un bucle, es decir el proceso A llama al B y este al C y este al A y este al B y este al C y vuelta a repetir, pero al final funciona no muy bien pero puedo probarlo.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con Impresión de ListBox

Publicado por Jose (4 intervenciones) el 16/12/2021 23:18:02
Buenas tardes Profesor Antoni.
Realmente no sé que le está sucediendo, yo probé acá el mismo archivo que le envié y no me da ese error, de hecho no me da ninguno.
Bueno, podría decirme que significa el +2 que le comenté, porque voy a intentar aplicar el código que usted me envió y revisar...
Gracias de todas formas.

Saludos respetuoso

JIPM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problema con Impresión de ListBox

Publicado por Antoni Masana (498 intervenciones) el 17/12/2021 17:47:15
Comento el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub BtnImprimirFiltros_Click()
        ...
        For I = 0 To LstHistorico.ListCount - 1                ' El indice I va desde el elemento 0 hasta el
                                                               '    ultimo elemento del ListBox
 
            For A = 1 To 22                                    ' El indice A va de la columna 1 (A) a la
                                                               '    columna 22 (V)
 
                .Cells(I + 2, A) = LstHistorico.List(I, A - 1) ' El primer parámetro del Cells es la fila y la
                                                               '    primera fila dende escribe es la 2.
                                                               '    Como la primera vez I valdra 0 y queremos
                                                               '    escribir al la fila 2 le sumo 2 a I
                                                               '    En el siguiente ciclo I valdra 1 y queremos
                                                               '    escribir al la fila 3 le sumo 2 a I, etc.
                                                               ' El segundo Parámetro del Cells es la Columna y
                                                               '    la Columna A es la 1, en el ListBox el primer
                                                               '    campo es el 0 y le resto 1 a A
            Next
        Next I

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Problema con Impresión de ListBox

Publicado por Jose (4 intervenciones) el 18/12/2021 02:11:35
Buenas noches amigos del Foro.
Buenas noches Profesor Antoni.
Muy bien su respuesta, algunas de estas cosas las conocía, pero realmente el +2 era una incógnita que ahora despejo con su explicación.
Gracias una vez más. Siempre se aprende algo nuevo con ustedes.
Un saludo respetuoso.
Se le aprecia.
JIPM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar