SERÁ POSIBLE...

07/11/2007 - 21:53 por ubeosorio | Informe spam
Hola Grupo,

Muchas gracias por tadas las ayudas que me han dado.

Ahora estoy haciendo en la "Hoja 1" una encuesta que me deben
responder varias personas, cada vez que cada persona termine de
ingresar su respectiva información una Macro llevará los datos a la
"Hoja 2" donde se almacenan en una base de datos...

El problema es que algunas personas no ingresan las respuestas de
algunas preguntas principales...

¿¿¿Será posible... un codigo en la macro que pasa los datos de la
Hoja1 a la base de datos verifique que las celdas B3, C4, F5, D6,
E7:G7, D9, C10:F10. ... NO esten vacias, y me interrumpa la opción de
guardar????

Muchas Gracias

Ubeimar

Preguntas similare

Leer las respuestas

#6 ubeosorio
09/11/2007 - 05:37 | Informe spam
1) por eso es que sugeri usar la variable constante para que indiques (todas) las celdas una sola vez ;)

2) podrias hacer un bucle recorriendo cada una de las celdas (en la variable constante)
revisando cual/es quedaro/n vacia/s y mostrar la informacion (p.e.) en un mensaje...
o seleccionar solo las que quedaron vacias...
(lo que no "veo" es como identificar a cual numero de pregunta corresponderia cada celda omitida o vacia) -?-

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.





Gracias Hector,

bueno, lo de la identificación al numero de pregunta sería haciendo
referencia a que por ejemplo en la celda C2 debe ir la repuesta 1, y
se encuentre en blanco.

pero te pido el gran favor de indicarme como crear el bucle que me
recomiendas, solo sé que se trata de una acción que se repite o algo
así.

Te agradezco mucho

Ubeimar
Respuesta Responder a este mensaje
#7 Héctor Miguel
09/11/2007 - 06:33 | Informe spam
hola, Ubeimar !

1) por eso es que sugeri usar la variable constante para que indiques (todas) las celdas una sola vez ;)

2) podrias hacer un bucle recorriendo cada una de las celdas (en la variable constante)
revisando cual/es quedaro/n vacia/s y mostrar la informacion (p.e.) en un mensaje...
o seleccionar solo las que quedaron vacias...
(lo que no "veo" es como identificar a cual numero de pregunta corresponderia cada celda omitida o vacia) -?-



... lo de la identificacion al numero de pregunta seria haciendo referencia a que
por ejemplo en la celda C2 debe ir la repuesta 1, y se encuentre en blanco.

... como crear el bucle que me recomiendas, solo se que se trata de una accion que se repite o algo asi.



nota que el rango que usaste como ejemplo en tu consulta original fue: -> B3, C4, F5, D6, E7:G7, D9, C10:F10. ...
y la celda que mencionas auora [C2] ni siquiera aparece dentro del rango a verificar "original"...
(ademas) si le ponemos nombre a lo que pudiera significar (realidad o ejemplo) eso de "..." -???-
(por eso te comentaba):
-> "(lo que no "veo" es como identificar a cual numero de pregunta corresponderia cada celda omitida o vacia)"

lo de crear el bucle para informar al usuario lo que esta dejando pendiente (y seleccionarlas) en su caso...
prueba con las siguientes modificaciones a la propuesta anterior (OJO: mismos rangos de tu consulta original)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

Private Const Celdas As String = "b3,c4,f5,d6,e7:g7,d9,c10:f10"
Sub Respalda_info()
Dim Celda As Range, Faltan As Range
With Range(Celdas)
If Evaluate("counta(" & .Address & ")") = .Count Then GoTo Registra
End With
For Each Celda In Range(Celdas)
If IsEmpty(Celda) Then Set Faltan = Union(IIf(Faltan Is Nothing, Celda, Faltan), Celda)
Next
MsgBox "Hace falta completar la informacion de" & vbCr & Faltan.Address(0, 0)
Faltan.Select
Set Faltan = Nothing
Exit Sub
Registra:
MsgBox "Informacion completa... prosiguiendo con el registro..."
End Sub
Respuesta Responder a este mensaje
#8 ubeosorio
09/11/2007 - 23:29 | Informe spam
Hola Hector

me quede con el primer codigo, pero para que me trabaje la respuesta
de manera individual a cada celda segun la pregunta hice lo siguiente:

en un primer modulo:

Private Const Celdas As String = "b3"
Sub Respalda_info()
With Range(Celdas)
If Evaluate("counta(" & .Address & ")") <> .Count Then
MsgBox "Hace falta responder la pregunta 1"
.Select
Exit Sub
End If
End With
Call Respalda_info1
End Sub

en otro modulo (uno para cada celda que se va a analizar)

Private Const Celdas As String = "c4"
Sub Respalda_info1()
With Range(Celdas)
If Evaluate("counta(" & .Address & ")") <> .Count Then
MsgBox "Hace falta responder la pregunta 2"
.Select
Exit Sub
End If
End With
Call Respalda_info2
End Sub

hasta el ultimo modulo que contiene:

Private Const Celdas As String = "C10:F10"
Sub Respalda_info7()
With Range(Celdas)
If Evaluate("counta(" & .Address & ")") <> .Count Then
MsgBox "Hace falta responder la pregunta 7"
.Select
Exit Sub
End If
'Call Respalda_info2
End With
MsgBox "Informacion completa... prosiguiendo con el registro..."
Call Guardar
End Sub


me parece un poco largo el trabajo, pero en un solo modulo no fui
capaz de que funcionara, por eso ensaye en varios modulos y haciendo
unas pequeñas variaciones. si conoces una forma mas sencilla te
agradecería me contaras.

Seguire ensayando a ver como me funciona

Muchas gracias por compartir tu conocimiento

Ubeimar
Respuesta Responder a este mensaje
#9 Héctor Miguel
10/11/2007 - 00:48 | Informe spam
hola, Ubeimar !

la pregunta 7 corresponde al rango C10:F10 ? (como que)...
-> me empieza a dar la impresion de que tienes varias celdas "combinadas" -???-

habra algo mas que se te hubiera quedado en el tintero ?

saludos,
hector.

__ la consulta original __
me quede con el primer codigo, pero para que me trabaje la respuesta de manera individual a cada celda segun la pregunta hice lo siguiente:
en un primer modulo: (...)
en otro modulo (uno para cada celda que se va a analizar) (...)
hasta el ultimo modulo que contiene:
Private Const Celdas As String = "C10:F10"
Sub Respalda_info7()
With Range(Celdas)
If Evaluate("counta(" & .Address & ")") <> .Count Then
MsgBox "Hace falta responder la pregunta 7"
.Select
Exit Sub
End If
'Call Respalda_info2
End With
MsgBox "Informacion completa... prosiguiendo con el registro..."
Call Guardar
End Sub

me parece un poco largo el trabajo, pero en un solo modulo no fui capaz de que funcionara
por eso ensaye en varios modulos y haciendo unas pequenas variaciones.
si conoces una forma mas sencilla te agradecería me contaras.
Seguire ensayando a ver como me funciona...
Respuesta Responder a este mensaje
#10 ubeosorio
10/11/2007 - 01:44 | Informe spam
Hola Hector,

tienes razon, el rango c10:f10 (celdas combinadas) no habia caido en
cuenta que lo puedo llamar simplemente c10.

pero que opinas de como estoy trabajando las macros, ¿es muy
rudimentario? o puede ser la forma correcta. sinembargo me queda la
inquietud de ¿por que no me funciona en un mismo modulo?

Muchas gracias

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