• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

cerrar planilla con condicion

claudiafer

New member
Estimados tengo una planilla con 31 hojas que representan los días les mes... cada hoja recoge numero de atenciones diarias de urgencia...
cuando la enfermera entra en el dia especifico debe anotar las atenciones, pero además un dato de temperatura y humedad ambiental que generalmente se olvida.

mi problema es como hacer para que la enfermera no pueda cerrar el archivo si no coloca temperatura y humedad... PERO el problema es que en todas las hojas tendre ese dato en blanco... por la tanto la funcionalidad debe ser para el dia de HOY...

Quedo atenta a su ayuda
 

Antoni

Well-known member
Se puede hacer, pero es necesario que en cada hoja exista una celda con la fecha para poder compararla con el día de hoy y así poder impedir el cierre del archivo si los datos de temperatura y humedad no están informados.
Deberías subir un archivo Excel para ver como tienes la información.
 

claudiafer

New member
estimado le adjunto un ejemplo... esta en blanco por motivos obvios, cada hoja representa el dia del mes... imaginemos que necesitamos dejar si o si datos en B26 y B27... y que no puedan cerrar el archivo si hoy 08 no hay datos en la hoja 8... y asi todos los días...

quedo mas que atenta
 

Adjuntos

Antoni

Well-known member
En el módulo ThisWorkbook:

Código:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets(Day(Date))
   If .Range("B26") = "" Or .Range("B27") = "" Then
      MsgBox "Debes rellenar las celdas B26 y B27 antes de salir", vbCritical, "SAPU"
      Cancel = True
   End If
End With
End Sub


Abre el adjunto, borra las celdas B26 y B27 e intenta cerrar el archivo (hoy es 09/09/2020)

.
 

Adjuntos

claudiafer

New member
En el módulo ThisWorkbook:

Código:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets(Day(Date))
   If .Range("B26") = "" Or .Range("B27") = "" Then
      MsgBox "Debes rellenar las celdas B26 y B27 antes de salir", vbCritical, "SAPU"
      Cancel = True
   End If
End With
End Sub


Abre el adjunto, borra las celdas B26 y B27 e intenta cerrar el archivo (hoy es 09/09/2020)

.
Antony muchas gracias por su respuesta, lo hice en la planilla, pero resulta que intento cerrar y me da el mensaje, pero luego si vuelvo a intentar cerrar, si me deja... aunque aun ese campo este vacio... que será???
 

Antoni

Well-known member
Con el archivo que subí no ocurre lo que cuentas, hoy es día 11, si no llenas las celdas B26 y B27 de la hoja 11, es imposible salir.
Sube el archivo en el que te ocurre y lo miro, pero no tiene ciencia ninguna.
 

Cacho R

Well-known member
Hola! Claudia (y Gran Antoni). Introduce una pequeña modificación a la Macro para que te quede así:
JavaScript:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets(CStr(Day(Date)))
  Application.Goto .Range("Q36")
  If .Range("Q36") = "" Or .Range("Q38") = "" Then
    MsgBox "Debes rellenar TEMPERATURA y HUMEDAD EN celdas Q36 y Q38 antes de salir", vbCritical, "SAPU"
    Cancel = True
  End If
End With
End Sub
 

Antoni

Well-known member
Cacho, muy oportuna tu modificación, aunque en este caso, el índice de la hoja coincide con el nombre y en cualquier caso no justificaría el comportamiento que relata la consultante.

Claudiafer, lamento comunicarte que con tu archivo no me ocurre lo que comentas, o sea, funciona correctamente.
He modificado la macro de acuerdo a las indicaciones de Cacho y alguna cosa más de cosecha propia.
Prueba a ver. Te devuelvo el archivo corregido. La macro queda así.

Código:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Sheets(CStr(Day(Date)))
  Application.Goto .Range("Q36")
  If Trim(.Range("Q36")) = "" Or Trim(.Range("Q38")) = "" Then
    MsgBox "Debes rellenar TEMPERATURA y HUMEDAD EN celdas Q36 y Q38 antes de salir", vbCritical, "SAPU"
    Cancel = True
  End If
End With
End Sub


Nota:
Ni que decir tiene, que por mucho que se rellenen esas celdas, si luego no se guarda el archivo es como si no hubieran rellenado.
Si quieres se puede guardar el archivo de forma automática al cerrar.
 

Adjuntos

Cacho R

Well-known member
Cacho, muy oportuna tu modificación, aunque en este caso, el índice de la hoja coincide con el nombre y en cualquier caso no justificaría el comportamiento que relata la consultante.
Fue una "redundancia conducente" como lo son tus dos Trim. Lo que quería aportar era el Application.Goto por si estuvieran poniendo los datos en otra hoja que no fuera el día presente.

Salute a tutti.
Cacho R.
 

claudiafer

New member
Estimados les agradezco a ambos sus aportes , que me han sido de gran utilidad y apredizaje.
les planteo esta inquietud... he probado la macro de Antoni y me funciono perfecto pero al probarlo de otro pc (pues nosotros trabajamos con pc en red y permisos asociados).. me volvió a ocurrir lo mismo de que a la segunda vez se cerraba... serán los permisos(de compartir carpeta en red) que influye en las macros??.

gracias nuevamente a ambos, probare ahora con la macro enviada por cacho...
 

Cacho R

Well-known member
... al probarlo de otro pc (pues nosotros trabajamos con pc en red y permisos asociados).. me volvió a ocurrir lo mismo de que a la segunda vez se cerraba.
Claudia:
¿Estás "recontra-segura" que te encuentras utilizando el archivo que subió Antoni?...

Te lo pregunto pues el problema que describes -en principio- no tiene vinculación alguna con temas de compartir o no compartir un libro, ¿Comprendes?...

Saludos, Cacho R.
 

claudiafer

New member
si estoy segura y si descargo nuevamente sus archivos de respuesta me sigue ocurriendo... cierro y me da mensaje, acepto y luego vuelvo a salir y me cierra de inmediato...:(
 
Arriba