Tramas de color no imprimibles.

Hola Fernando.
Necesito poner en varias celdas una trama de color (amarillo, azul y verde)pero no deseo que esa trama de color se imprima (no me valen las autoformas)
¿Es posible mediante VB?
Un saludo

1 respuesta

Respuesta
1
Así como lo enuncias, indefectiblemente, la solución no puede ignorar VBA.
Activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega los siguientes códigos:
Sub ImpreSinBord()
Sheets("Hoja1").Select 'cambia la dirección de la hoja
'o elimina la línea si quieres que la macro actue sobre
'cualquier hoja activa
Rango1 = "A2:D44"
Color1 = 6 'Número indice que representa el AMARILLO
Rango2 = "G8:M15"
Color2 = 5 'Número indice que representa el AZUL
Rango3 = "Z58:AA115"
Color3 = 4 'Número indice que representa el VERDE
LimpHoja Rango1
LimpHoja Rango2
LimpHoja Rango3
ActiveSheet. PrintOut ' impresión de la hoja activa
PrepHoja Rango1, Color1
PrepHoja Rango2, Color2
PrepHoja Rango3, Color3
End Sub
Private Sub LimpHoja(Rango)
With Range(Rango)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlNone
.Borders(xlEdgeTop).LineStyle = xlNone
.Borders(xlEdgeBottom).LineStyle = xlNone
.Borders(xlEdgeRight).LineStyle = xlNone
.Borders(xlInsideVertical).LineStyle = xlNone
.Borders(xlInsideHorizontal).LineStyle = xlNone
End With
End Sub
Private Sub PrepHoja(Rango, color)
With Range(Rango)
.Borders(xlDiagonalDown).LineStyle = xlNone
.Borders(xlDiagonalUp).LineStyle = xlNone
.Borders(xlEdgeLeft).LineStyle = xlContinuous
.Borders(xlEdgeTop).LineStyle = xlContinuous
.Borders(xlEdgeBottom).LineStyle = xlContinuous
.Borders(xlEdgeRight).LineStyle = xlContinuous
.Borders(xlInsideVertical).LineStyle = xlContinuous
.Borders(xlInsideHorizontal).LineStyle = xlContinuous
.Borders(xlEdgeLeft).Weight = xlThin
.Borders(xlEdgeTop).Weight = xlThin
.Borders(xlEdgeBottom).Weight = xlThin
.Borders(xlEdgeRight).Weight = xlThin
.Borders(xlInsideVertical).Weight = xlThin
.Borders(xlInsideHorizontal).Weight = xlThin
.Borders(xlEdgeLeft).ColorIndex = color
.Borders(xlEdgeTop).ColorIndex = color
.Borders(xlEdgeBottom).ColorIndex = color
.Borders(xlEdgeRight).ColorIndex = color
.Borders(xlInsideVertical).ColorIndex = color
.Borders(xlInsideHorizontal).ColorIndex = color
End With
End Sub
Bien, aquí tienes una macro troncal donde puedes definir qué rangos serán afectados y qué color de entramado le asignarás.
Luego, llama a una rutina a fin de que cada rango no tenga bordes.
Hecho esto, imprime la hoja y, finalmente otra rutina devuelve el entramado a cada rango.
---
Si, de casualidad, la trama fuese de un único color para toda la hoja no necesitarías VBA para resolverlo.
Bastaría conque elijas un color para la trama con "Herramientas" | "Opciones" y, la pie de la solapa "Ver" selecciones el color de la grilla para la hoja activa.
Luego en "Archivo" | "configurar página", quita la marca (si la hubiera) de la casilla "líneas de división" que está en la pestaña "Hoja".
Pero, bueno, creo que lo que buscas estaría resuelto con la primera solución.
Espero que te sirva.
Un abrazo!
Fernando

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas