Macro para resaltar celdas vacias

Solo consultas sobre macros y código VBA Excel.
Reglas del Foro 1. Antes de hacer tu pregunta intenta con el buscador de este foro (muchas preguntas ya fueron respondidas antes!)
2. Si haces una nueva pregunta, es muy recomendable que adjuntes el ejemplo Excel para poder comprenderla mejor!
3. Realiza tu pregunta de forma clara, explicando bien cada paso de lo que haces y tendrás más probabilidad de respuesta!

Macro para resaltar celdas vacias

Notapor elserbio » 29 Sep 2018 08:19

Hola de nuevo,tengo una macro que cuando le doy a imprimir a una hoja excel me verifica que ciertas celdas estan vacias, me funciona perfectamente,pero me gustaria que las celdas que estuvieran vacias se quedaran marcadas de alguna manera hasta que se rellenaran.La macro que tengo es esta:


Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim celdasComprobar As String
Dim celdasComprobarAux As String
Dim celdasNoVacias As Long
Dim celdasTotales As Long
celdasComprobar = "'Hoja4'!D8,D9,D10,D11,,F7,H7,G8,"
celdasNoVacias = Application.Evaluate("=CountA(" + celdasComprobar + ")")
With CreateObject("VBScript.Regexp")
.Global = True
.Pattern = ",[^,]*\!"
celdasComprobarAux = Mid(.Replace("," + celdasComprobar, ","), 2)
End With

celdasTotales = Range(celdasComprobarAux).Count
If celdasNoVacias <> celdasTotales Then
MsgBox ("Hay celdas vacias")
Cancel = True
End If



End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = False Then
MsgBox " Prohibido Guardar "
Cancel = True
End If
End Sub


Gracias de antemano por vuestra ayuda
elserbio
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 31
Registrado: 24 Oct 2016 18:37

Re: Macro para resaltar celdas vacias

Notapor Héctor Miguel » 29 Sep 2018 13:47

opcion:

1) selecciona en la Hoja4 el rango que necesitas en este orden: [F7], [G8], [H7], [D8:D11] OJO: la celda activa debera quedar en [D8]
2) establece un formato condicional por formula: =esblanco(d8)
3) aplica los formatos de tu preferencia
4) copia/pega (o escribe) este procedimiento en el modulo del libro [ThisWorkbook]:
Código: Seleccionar todo
Private Const estasCeldas As String = "d8:d11,f7,g8,h7"
Private Sub Workbook_BeforePrint(Cancel As Boolean)
  With Worksheets("hoja4")
    If Application.CountA(.Range(estasCeldas)) <> .Range(estasCeldas).Count _
     Then MsgBox "Hay celdas por llenar en " & .Name: Cancel = True
  End With
End Sub

el formato condicional sera una "ayuda visual" para identificar celdas pendientes de cumplimentar (desaparece al llenarlas)

saludos,
hector.
Avatar de Usuario
Héctor Miguel
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 4653
Registrado: 26 Mar 2005 18:31

Re: Macro para resaltar celdas vacias

Notapor Antoni » 29 Sep 2018 13:51

Por ejemplo:

Código: Seleccionar todo
Sub Validar(): On Error GoTo Correcto
'--
Hoja4.Range("D8:D11,F7,G8,H7").SpecialCells(xlCellTypeBlanks).Interior.Color = vbYellow
Exit Sub
'--
Correcto:
   MsgBox "*** Rango informado correctamente ***", vbInformation
End Sub
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5583
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Macro para resaltar celdas vacias

Notapor elserbio » 30 Sep 2018 10:09

Gracias Hector pero me da error en esta linea:
With Worksheets("hoja4")
Aparte lo que yo quiero es que estando en blanco cuando le de a imprimir la celda o celdas que estén sin datos se coloreen .Con la idea que me has puesto siempre están con color hasta que las rellenas (es buena idea , no la descarto) .
elserbio
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 31
Registrado: 24 Oct 2016 18:37

Re: Macro para resaltar celdas vacias

Notapor elserbio » 30 Sep 2018 10:11

Gracias Antoni por contestar, esa macro donde la coloco?.No he sabido hacerla funcionar
elserbio
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 31
Registrado: 24 Oct 2016 18:37

Re: Macro para resaltar celdas vacias

Notapor Antoni » 30 Sep 2018 14:29

Sube tu archivo y te corregiré el código.
Avatar de Usuario
Antoni
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 5583
Registrado: 22 Dic 2009 04:58
Ubicación: GALICIA (ESPAÑA)

Re: Macro para resaltar celdas vacias

Notapor elserbio » 01 Oct 2018 12:03

Hola Antoni , en cuanto pueda subo el archivo, pero basicamente es esto:
F7 desplegable donde elijo entre 3 opciones
H7 desplegable donde elijo entre 2 opciones
D8 aqui pongo una hora
G8 aqui pongo otra hora
D9 aqui pongo un numero de operario
D10 Lista desplegable con varias opciones
G11 lista desplegable dependiente de D10
D11 lista desplegable dependiente de G11
Tambien voy a poner unos textbox donde se puedan describir varios problemas y quisiera que tambien se destacaran si al darle a imprimir estubieran vacios.
La macro que tengo es la que puse al principo:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

Dim celdasComprobar As String
Dim celdasComprobarAux As String
Dim celdasNoVacias As Long
Dim celdasTotales As Long
celdasComprobar = "'Hoja4'!D8,D9,D10,D11,,F7,H7,G8,"
celdasNoVacias = Application.Evaluate("=CountA(" + celdasComprobar + ")")
With CreateObject("VBScript.Regexp")
.Global = True
.Pattern = ",[^,]*\!"
celdasComprobarAux = Mid(.Replace("," + celdasComprobar, ","), 2)
End With

celdasTotales = Range(celdasComprobarAux).Count
If celdasNoVacias <> celdasTotales Then
MsgBox ("Hay celdas vacias")
Cancel = True
End If



End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = False Then
MsgBox " Prohibido Guardar "
Cancel = True
End If
End Sub


Espero haberme explicado bien , un saludo
elserbio
Miembro Frecuente
Miembro Frecuente
 
Mensajes: 31
Registrado: 24 Oct 2016 18:37


Volver a Macros

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados