Resaltar campos no bloqueados

¿Cómo puedo resaltar las celdas no bloqueadas de una plantilla (en las que quiero que se edite)con un color, pero que este color no se imprima?. O cualquier otra solución para llamar la atención al que rellene la plantilla de que es en esas celdas en las que puede editar.

1 respuesta

Respuesta
1
Recién vuelto de mi fin de semana, vi tu pregunta.
Me hubiera gustado saber si tienes una macro de impresión (ayudaría que la tuviersas), de todos modos te daré las dos alternativas posibles:
Veamos, primero activa el editor de Visual Basic (presiona Alt+F11), inserta un nuevo módulo ("Insertar", "Módulo") y pega el siguiente código:
'Define aquí el rango amplio que
'comprenda a las celdas habilitadas:
Const SupIzq = "B2"
Const InfDer = "F20"
'------------------ gracias
Sub pinta()
For Each celda In Range(SupIzq, InfDer)
If celda.Locked Then
celda.Interior.ColorIndex = xlNone
Else
celda.Interior.ColorIndex = 34
End If
Next
End Sub
Sub despinta()
For Each celda In Range(SupIzq, InfDer)
celda.Interior.ColorIndex = xlNone
Next
End Sub
Verás, al inicio, dos variables para indicarle un rango que comprenda las celdas no bloqueadas (esto aliviana el trabajo de la macro, para que no recorra toda la hoja buscándolas). Coloca allí las referencias.
Este módulo te será útil tanto si tienes una macro de impresión como si no.
Si la tuvieras, bastara conque escribas
Despinta
Antes de la instrucción de imprimir y:
Pinta
Inmediatamente después.
Si, en cambio no existiese tal macro de impresión, apelaremos a eventos:
El evento Before_Print para que quite el color antes de imprimir y el calculate de la Hoja dónde quieres que esto ocurra (donde harás la carga de datos). Da doble click sobre ella.
Copia el código siguiente y pégalo en el panel desplegado a la derecha de su Editor de Visual Basic:
Private Sub Worksheet_Calculate()
pinta
End Sub
(Cada vez que la hoja se recalcule, la macro pintará las celdas desbloqueadas. De hecho puedes elegir otro evento, si te parece más acertado)
Y, en la hoja que dice "ThisWorkbook" (o "EsteLibro" según la versión), pega este otro:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
despinta
End Sub
Este, desde luego, quitará el color de las celdas bloqueadas antes de imprimir.
---
Una alternativa más doméstica sería colocar un 1 en una celda y darle Formato condicional a las celdas no bloqueadas, referido a que aquella celda tuviera o no un 1. Deberías borrarlo antes de imprimir y volverlo a colocar al momento de la carga.
Elige el método que te resulte más adecuado.
- Ingresa al sitio www.porloschicos.com y, si quieres,
presiona el botón de donación (es gratis).
Confío en que lo harás.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas