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 de fejoal
1
1
fejoal, Por falta de tiempo para responder como me gusta hacerlo suspendo...
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