Chequear celda vacia

31/10/2007 - 18:53 por AgerGaston | Informe spam
Hola a todos.
En forma diaria envio a varios usuarios una misma planilla, los cuales como
devolucion la deben completar con diferentes datos, pero una celda es
obligatoria, la C1.

La pregunta es: como puedo hacer para que cuando el usuario cierre el excel,
la macro chequee que la celda C1, no este vacia?. Que aparezca un msgbox
dando aviso sobre la situacion.

Algo similar a lo que hace la funcion "validacion" (datos -> validacion...),
la celda debe tener un valor numerico, pero me gustaria saber si se puede
validar otros formatos (fecha, texto, etc).

Espero que se entienda.

Gracias y saludos

Preguntas similare

Leer las respuestas

#1 David
31/10/2007 - 20:06 | Informe spam
Supongamos que la hoja donde está la celda a validar se llama "Hoja1". Desde
el Editor de VisualBasic, haz doble clic en "ThisWorkbook", y escribe o pega
lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Hoja1").Range("C1").Value = Empty Then
Cancel = True
MsgBox "No se puede cerrar el archivo. Ingrese un dato en C1"
End If
End Sub

Para la segunda pregunta, puedes validar el contenido de la celda. Mírate
en la ayuda las siguientes funciones, y comentas cuál es la más adecuada a tu
caso:

ESBLANCO(C1)
ESLOGICO(C1)
ESNOTEXTO(C1)
ESNUMERO(C1)
ESTEXTO(C1)
TIPO(C1)

Luego, en algun lugar de tu libro, podrías introducir la formula que se
adapte a tu caso, y tomar decisiones en base al resultado de la misma.

Comentas si tienes más dudas.

Saludos.



"AgerGaston" escribió:

Hola a todos.
En forma diaria envio a varios usuarios una misma planilla, los cuales como
devolucion la deben completar con diferentes datos, pero una celda es
obligatoria, la C1.

La pregunta es: como puedo hacer para que cuando el usuario cierre el excel,
la macro chequee que la celda C1, no este vacia?. Que aparezca un msgbox
dando aviso sobre la situacion.

Algo similar a lo que hace la funcion "validacion" (datos -> validacion...),
la celda debe tener un valor numerico, pero me gustaria saber si se puede
validar otros formatos (fecha, texto, etc).

Espero que se entienda.

Gracias y saludos


Respuesta Responder a este mensaje
#2 AgerGaston
01/11/2007 - 19:37 | Informe spam
Hola David.
Funciona perfectamente lo que me enviaste, eso es lo que me hacia falta.

Pero ahora te la complico un poco. Cuando yo envie este Excel la macro me va
a validar que la celda C1, no este vacia.¡

Pregunta: ¿Como hago para que la celda C1 este vacia y no me interrumpa con
el msgbox??

Con respecto a la segunda parte deberia usar, por ahora, ESNUMERO(C1), como
la adapto a la macro anterior ??

Digo por ahora, porque estoy pensando en usar esta macro en otro tipo de
planillas, pero lo dejo para mas adelante.

Gracias por responder.



"David" escribió:

Supongamos que la hoja donde está la celda a validar se llama "Hoja1". Desde
el Editor de VisualBasic, haz doble clic en "ThisWorkbook", y escribe o pega
lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Hoja1").Range("C1").Value = Empty Then
Cancel = True
MsgBox "No se puede cerrar el archivo. Ingrese un dato en C1"
End If
End Sub

Para la segunda pregunta, puedes validar el contenido de la celda. Mírate
en la ayuda las siguientes funciones, y comentas cuál es la más adecuada a tu
caso:

ESBLANCO(C1)
ESLOGICO(C1)
ESNOTEXTO(C1)
ESNUMERO(C1)
ESTEXTO(C1)
TIPO(C1)

Luego, en algun lugar de tu libro, podrías introducir la formula que se
adapte a tu caso, y tomar decisiones en base al resultado de la misma.

Comentas si tienes más dudas.

Saludos.

Respuesta Responder a este mensaje
#3 AgerGaston
02/11/2007 - 15:06 | Informe spam
Me dan una mano ?

Gracias
Respuesta Responder a este mensaje
#4 David
02/11/2007 - 18:52 | Informe spam
Disculpa la tardanza... El 1 de noviembre es día de asueto en mi localidad,
oportunidad que aprovecho para desaparecer (literalmente) de este mundo...

Volviendo al tema. Podrías modificar un tanto el código a lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Hoja1").Range("C1").Value = Empty Then
Cancel = True
Sheets("Hoja1").Activate
Range("C1").Select
End If
End Sub

Esto hará que al intentar cerrar el libro, Excel te ubique en la celda en la
que se espera tener algún dato, sin generar mensajes.

Para la segunda pregunta, si necesitas utilizar EsNumero(), podrías hacer
algo como lo siguiente:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not Application.WorksheetFunction.IsNumber(Range("C1").Value) Then
Cancel = True
Sheets("Hoja1").Activate
Range("C1").Select
End If
End Sub

Observa que no es lo mismo aplicar la función desde la hoja, que desde VBA...

Cualquier cosa adiiconal, la comentas sin pena.

Saludos.



"AgerGaston" escribió:

Me dan una mano ?

Gracias

Respuesta Responder a este mensaje
#5 AgerGaston
02/11/2007 - 19:32 | Informe spam
Hola David, espero que hayas descansado.

Hasta aqui todo ok.

La nueva pregunta es: Cuando yo la envie, no quiero que me chequee la celda
C1, ya que esta validacion, no es para mi, es para el resto de los usuarios.

Espero que se entienda.

Gracias.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida