Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

VBA: no funciona el setfocus, no lo entiendo

Estas en el tema de VBA: no funciona el setfocus, no lo entiendo en el foro de Visual Basic clásico en Foros del Web. Hola tengo este problema: estoy validando un textbox(textbox1) de la siguiente forma If IsDate(TextBox1) = False Then MsgBox ("Debe ingresar una fecha") SetFocus.textbox1 End If ...
  #1 (permalink)  
Antiguo 22/01/2005, 09:50
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
Pregunta VBA: no funciona el setfocus, no lo entiendo

Hola

tengo este problema:
estoy validando un textbox(textbox1) de la siguiente forma

If IsDate(TextBox1) = False Then
MsgBox ("Debe ingresar una fecha")
SetFocus.textbox1
End If

pero luego de aparecer el msgbox el cursor aparece en el siguiente textbox.
Alguien sabe cual es el problema?
  #2 (permalink)  
Antiguo 22/01/2005, 10:42
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
bueno hasta donde yo sabia funcionaba
de esta manera..
Textbox1.Setfocus

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 22/01/2005, 22:41
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
tienes razon pero cuando escribo textbox1.setfocus tampoco funciona pues el cursor pasa de textbox1 a textbox2 . este es todo el codigo


Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
If IsDate(TextBox1) = False Then
MsgBox ("Debe ingresar una fecha")
TextBox1.SetFocus


End If
End Sub
  #4 (permalink)  
Antiguo 24/01/2005, 04:46
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Evento Lostfocus

En realidad debes usar el evento Lostfocus. El codigo seria algo asi:

Código:
 Private Sub TextBox1_LostFocus()
   If IsDate(TextBox1.Text) = False Then
	   MsgBox ("Debe ingresar una fecha")
	   TextBox1.SetFocus
   End If
End Sub
Saludos. Lucas
  #5 (permalink)  
Antiguo 25/01/2005, 09:32
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
tampoco funciona el lostfocus, es mas ahora no funciona nada del bucle, por que?, alguien sabes?
  #6 (permalink)  
Antiguo 25/01/2005, 09:41
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Aclarando...

Cita:
Iniciado por javiergal
tampoco funciona el lostfocus
Javier. Si estas usando un textbox el código anterior tiene que andar. ¿Te tira error? ¿Pasa al otro control? ¿que sucede?

Cita:
Iniciado por javiergal
es mas ahora no funciona nada del bucle
¿bucle? ¿que bucle?

Saludos. Lucas
  #7 (permalink)  
Antiguo 25/01/2005, 11:10
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
ay, lucas esto ya me esta dando dolor de cabeza. verás este es el codigo que tu me diste:

Private Sub TextBox1_LostFocus()
If IsDate(TextBox1.Text) = False Then
MsgBox ("Debe ingresar una fecha")
TextBox1.SetFocus
End If
End Sub

para empezar el LostFocus no aparece como opción en el combo que muestra "click", "exit", "beforedragover", etc. Cuando escribo tu codigo en el combo que muestra textbox1, textbox2, commandbutton1, etc aparece "general" y en el otro combo aparece "textbox1_LostFocus().

Luego al correr el codigo, si yo ingreso una letra en el textbox1 no aparece ningún mensaje ni nada, lo único que ocurre es que el cursor pasa al siguiente textbox.

sabes cual es el problema?
acaso falta alguna librería?

gracias por tu tiempo
  #8 (permalink)  
Antiguo 26/01/2005, 04:44
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Pregunta Aclarando... 2º parte

¿¡¿No aparece el LostFocus?!? Para... Estamos hablando de Visual Basic 6.0 no? Los eventos exit y beforedragover no me resultan conocidos... La verdad nunca habia visto que no te apareciera el evento lostfocus...



Debería estar. Y evidentemente no es un asunto de referencias a alguna librería o algo por el estilo. El lostfocus debería aparecer sin hacer referencia a algun archivo... En fin...

Saludos. Lucas
  #9 (permalink)  
Antiguo 26/01/2005, 12:25
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
ups, yo estoy hablando de vba, el editor de visual basic de excel, lo digo al comienzo, en mi primer mensaje. realmente en vba no encuentro lostfocus, talvez falta alguna librería, sabes algo sobre esto?, por favor no me abandones porque he buscado por todos lados y no se como diantres hacer funcionar el setfocus. funciona cuando lo dirigo a otro textbox, pero cuando lo dirigo al mismo textbox entonces no funciona.

gracias por todo...
  #10 (permalink)  
Antiguo 26/01/2005, 12:48
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Huy, perdon

Ooooops , crei que habia sido un error de tipeo lo del VBA. Mira vos, no sabia que se asi se llamaba el editor de Visual de Excel...
Bueno. Ahora no te puedo ayudar, porque tengo que irme del trabajo, pero despues voy a buscar algo...

Saludos y exitos!

Lucas
  #11 (permalink)  
Antiguo 27/01/2005, 06:38
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
bien lucas, estare esperándote, gracias por tu tiempo
saludos
  #12 (permalink)  
Antiguo 27/01/2005, 10:00
 
Fecha de Ingreso: enero-2005
Mensajes: 12
Antigüedad: 19 años, 3 meses
Puntos: 0
Bueno, vamos a ver si consigo echarte una mano.

Yo tengo un programa creado con Visual Basic 6.0 y cuando le pido una contraseña, si quiero que me ponga el Focus en un Cuadro de texto, pues se lo pongo y me imagino que en los editores de Excel serán exactamente igual, pues funcionan con Visual Basic.

El Código que le meto yo es el siguiente:
Private Sub cmdOk_Click()
'Verifica la valided del password
If txtPassword = "tefitatis" Then
LoginSucceeded = True
frmNuevo.Show
Else
MsgBox "Password no valido. Intentelo de nuevo.", , "Accesso"
txtPassword.SetFocus 'En esta linea le pones el nombre de la caja de texto.
SendKeys "{Home}+{End}" 'Sirve para seleccionar todo el contenido del caja de texto cuando le ponemos el Focus
End If
End Sub

De todas formas te aconsejo que las llames a las cajas de texto con algún nombre, pues si no te vas a liar entero.

En tu caso para las cajas de texto, empieza por txtNombre (por darte un consejo)
  #13 (permalink)  
Antiguo 28/01/2005, 18:15
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Tarde pero seguro....

Bueno javier. Pude hacer algo, pero no es del todo lo que buscabamos. En lugar de usar el evento BeforeUpdate, encontre el evento Exit, que es similar al Lostfocus de VB6. Evidentemente el msgbox hace que el foco pase al otro control, por lo que el "mensaje" lo arme con un label ubicado a la derecha del txt de la fecha. Este label, por defecto no tendra ningun texto. Este es el codigo:

Código:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
	If IsDate(TextBox1.Text) = False Then
		lbl1.Caption = "Debe ingresar fecha"
		Cancel = True
	Else
		lbl1.Caption = ""
	End If
End Sub
El Cancel es un parametro que si esta en True el foco se queda en ese control, por lo tanto si no es fecha lo que esta en el txt el foco se quedara alli y el label tendra como Caption un mensaje que diga que no es fecha, o algo asi. Vos lo acomodaras como quieras... Si lo que hay es fecha, el label quedara vacio, Cancel no estara en True y el foco se dirigira al siguiente control. Aclaración: CANCEL TIENE POR DEFECTO FALSE.

Bueno Javier. Costo pero algo salio. Espero que el codigo te sirva.

Saludos. Lucas
  #14 (permalink)  
Antiguo 28/01/2005, 20:36
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
excelente lucas, muchas gracias por todo, en verdad muchas gracias
  #15 (permalink)  
Antiguo 28/01/2005, 21:20
Avatar de javiergal  
Fecha de Ingreso: enero-2005
Mensajes: 153
Antigüedad: 19 años, 3 meses
Puntos: 0
muy buen codigo lucas en serio muchas gracias
  #16 (permalink)  
Antiguo 31/01/2005, 04:13
Avatar de lucasiramos  
Fecha de Ingreso: agosto-2004
Ubicación: Santa Rosa, La Pampa, Argentina
Mensajes: 1.484
Antigüedad: 19 años, 8 meses
Puntos: 13
Ok. Me alegro que despues de tanto luchar, te haya servido el código.

Un saludo grande. Lucas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:02.