Visual Basic - Problemas para Definir áreas de Impresión variables en Excel con VB

Life is soft - evento anual de software empresarial
   
Vista:

Problemas para Definir áreas de Impresión variables en Excel con VB

Publicado por W (2 intervenciones) el 07/09/2017 11:03:14
Tengo un problema para definir área de impresión variable.
Genero unas facturas que cambian de tamaño según el número de artículos. La zona la defino con el siguiente código:

1
2
3
4
5
6
'    AreaDeImpresion
    Range(Selection, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select
    With ActiveCell.Offset(2, 0)
        Celda = .Address
    End With
    ActiveSheet.PageSetup.PrintArea = "$B$1:" & Celda


Cuando lo ejecuto paso a paso, en la ventana de programador usando el depurador con la tecla F8. El programa define bien la zona y en la vista previa todo se ve bien pero cuando lo corro directamente, sin ir paso a paso, no define la zona correctamente y el área de impresión se queda corta. No salen las últimas líneas.

Soy nuevo programando en Visual Basic. Estoy aprendiendo VB por mi cuenta viendo manuales y tutoriales por internet. Muchas veces no sé qué es lo que hago mal.
Agradecería cualquier sugerencia.
Gracias.
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

Problemas para Definir áreas de Impresión variables en Excel con VB

Publicado por Antoni Masana (257 intervenciones) el 07/09/2017 12:21:36
No se exactamente que haces con el depurador pero yo he visto que es lo que no me padece que este bien

Este es tu codigo. Fijate que en la línea 2 la hoja activa es "Facturas Emitidas" y cuando llega a la línea 13 sigue en la misma hoja

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
'   Ahora Borro la Matriz Aux en  Facturas Emitidas                     
    Sheets("Facturas Emitidas").Activate  '>-----------------------+    
    Range("P2:Z2").Select                                 '        |    
    If Range("P3") <> "" Then                             '        |    
        Range(Selection, Selection.End(xlDown)).Select    '        |    
    End If                                                '        |    
    Selection.ClearContents                               '        |    
    Range("M2") = ""                                      '        |    
                                                          '        |    
'    AreaDeImpresion                                      '        |    
''''''''''''''''''''''''''''''''''''''''''''''''''''''''' '        |    
'    Dim Celda As Variant                                 '        v    
    Range(Selection, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select
    With ActiveCell.Offset(2, 0)
        Celda = .Address
    End With
    ActiveSheet.PageSetup.PrintArea = "$B$1:" & Celda

Y esta es la corrección. Con esto define bien el área a imprimir.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
'   Ahora Borro la Matriz Aux en  Facturas Emitidas
    Sheets("Facturas Emitidas").Activate
    Range("P2:Z2").Select
    If Range("P3") <> "" Then
        Range(Selection, Selection.End(xlDown)).Select
    End If
    Selection.ClearContents
    Range("M2") = ""
 
'    AreaDeImpresion
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'    Dim Celda As Variant
    Sheets("FATURA_Impresa").Activate                      ' <---- Añado el cambio a la hoja de FATURA_IMPRESA
    Range(Selection, ActiveCell.SpecialCells(xlCellTypeLastCell)).Select
    With ActiveCell.Offset(2, 0)
        Celda = .Address
    End With
    ActiveSheet.PageSetup.PrintArea = "$B$1:" & Celda

NOTA: Estaría mejor llamarla FACTURA_IMPRESA en lugar de FATURA_IMPRESA

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Problemas para Definir áreas de Impresión variables en Excel con VB

Publicado por W (2 intervenciones) el 07/09/2017 13:42:50
Muchas gracias Antoni
Tenía varios días con el problema y decidí usar el foro por primera vez.
No sé bien cómo funciona pero espero que te llegue mi agradecimiento.
Yo definía el área de impresión y después me cambiaba de hoja para borrar unas tablas que usaba temporalmente en otra hoja. Cuando quería regresar a la factura para imprimirla no me dejaba pero cuando lo hacía con el depurador yo cambiaba la hoja con el ratón y no me daba cuenta de lo que estaba haciendo. Ahora que lo veo es un error básico. Pero como dije es la primera vez que estoy usando VB .
De nuevo muchas gracias
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