No me imprime esta condicional VBA

Tengo así

'imprime dejando en blanco los totales y según rangos usados
If [M58] = "" Then
ActiveSheet.PageSetup.PrintArea = "$C$1:$C$41"
ElseIf [M58] >= 1 Then
'Agregar formato blanco
Range("T32:T33").Font.Color = RGB(255, 255, 255)
Range("V32:V33").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$83"
ElseIf [M100] >= 1 Then
'Agregar formato en blanco
Range("T32:T33").Font.Color = RGB(255, 255, 255)
Range("V32:V33").Font.Color = RGB(255, 255, 255)
Range("T74:T75").Font.Color = RGB(255, 255, 255)
Range("V74:V75").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$126"
End If

¿Y no me imprime que me falta?

1

1 respuesta

Respuesta
1

Ya te envié respuesta en consulta anterior. Agrega la línea de impresión:

'imprime dejando en blanco los totales y según rangos usados
If [M58] = "" Then
ActiveSheet.PageSetup.PrintArea = "$C$1:$C$41"
ElseIf [M58] >= 1 Then
'Agregar formato blanco
Range("T32:T33").Font.Color = RGB(255, 255, 255)
Range("V32:V33").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$83"
ElseIf [M100] >= 1 Then
'Agregar formato en blanco
Range("T32:T33").Font.Color = RGB(255, 255, 255)
Range("V32:V33").Font.Color = RGB(255, 255, 255)
Range("T74:T75").Font.Color = RGB(255, 255, 255)
Range("V74:V75").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$126"
End If
Activesheet. PrintOut 'imprime

PD) Atención con los rangos del condicional

Sdos!

lo tengo así 

'Imprime dejando en blanco los totales y según rangos usados
If [M57] = "" Then
ActiveSheet.PageSetup.PrintArea = "$C$1:$C$41"
ElseIf [M57] >= 1 Then
'Agregar formato en blanco
Range("T31:T32").Font.Color = RGB(255, 255, 255)
Range("V31:V32").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$82"
ElseIf [M99] >= 1 Then
'Agregar formato en blanco
Range("T31:T32").Font.Color = RGB(255, 255, 255)
Range("V31:V32").Font.Color = RGB(255, 255, 255)
Range("T73:T74").Font.Color = RGB(255, 255, 255)
Range("V73:V74").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$124"
End If
ActiveSheet.PrintOut 'Imprime
 

Son tres páginas del libro  la primera es  C1:V41 la segunda es C1:V82 y la tercera es C1:V124  me imprime la página1 si cumple el condicional , mi imprime la página 2 si cumple el condicional, pero la tres cumpliendo el condicional nunca me lo imprime.  En mi hoja aparece el área de impresión sin el rango C83:V124 que es mi tercera página,  tendré que cambiar el órden de la macro????   Muchas gracias por tu ayuda

además no solo quiero una impresión sino dos impresiones

Esperame unos días que estoy de viaje. Sdos!

hola, espero hayas tenido buen viaje.   Vuelvo a molestarte con esto  de lo que te pongo arriba,  no  se si cambio la condicional  y luego  sacar dos copias.   Gracias.

Como son condicionales diferentes, si se cumple uno ya no se analiza el otro.

Si M57 esta vacío se imprime el 1er rango y si tiene valor a partir de 1 imprime el 2do. Por lo tanto SIEMPRE se resuelve por alguna de estas 2 condiciones.

Quizás debas evaluar entonces primero el contenido de M99... y si no se cumple que se evalúe M57. Si eso es correcto las instrucciones quedaran como:

If [M99] >= 1 Then
'Agregar formato en blanco
Range("T31:T32").Font.Color = RGB(255, 255, 255)
Range("V31:V32").Font.Color = RGB(255, 255, 255)
Range("T73:T74").Font.Color = RGB(255, 255, 255)
Range("V73:V74").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$124

ElseIf [M57] = "" Then

ActiveSheet.PageSetup.PrintArea = "$C$1:$C$41"

ElseIf [M57] >= 1 Then

'Agregar formato en blanco
Range("T31:T32").Font.Color = RGB(255, 255, 255)
Range("V31:V32").Font.Color = RGB(255, 255, 255)
ActiveSheet.PageSetup.PrintArea = "$C$1:$V$82"
End If

ActiveSheet.PrintOut 'Imprime

Es decir que debes evaluar cual es la condición más relevante.

Ahora si necesitas imprimir tanto un rango según M57 y luego TAMBIEN el rango según M99 entonces la secuencia sería:

If M57 = "" Then

'instrucciones para este caso

Elseif M57 >= 1 Then

'instrucciones para este caso

End If

ActiveSheet.PrintOut 'Imprime según M57

If M99 >= 1 Then

'Instrucciones para esta caso

ActiveSheet. PrintOut 'Imprime según M99

End If

Sdos!

perdona tanta molestia,   si  pongo  M99 antes.  me corre bien,  ahora como te decía arriba necesito dos impresiones de cada una como lo hago???

Reemplaza la palabra 'PrintOut' por esto:

PrintOut Copies:=2, Collate:=True

Nota: para conocer los argumentos de la instrucción PrintOut coloca el cursor sobre esa palabra y presiona la tecla F1 que te abrirá la Ayuda del Editor donde encontrarás más aclaraciones sobre el tema.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas