Visual Basic para Aplicaciones - Problemas co MsgBox = vbOk

Life is soft - evento anual de software empresarial
 
Vista:
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas co MsgBox = vbOk

Publicado por Albert (204 intervenciones) el 25/02/2013 15:06:00
Buenos dias Foreros, tengo un problema con la respuesta de un MsgBox, pretendo que me deje un formulario a unas determinadas medidas y en un determinado lugar para ello he seguido +/- las instrucciones del la ayuda de excel, pero es evidente que no lo he hecho bien.
Os explico lo que he puesto por si veis donde he fallado:

Lo primero he creado la variable

Dim Respuesta As VbMsgBoxResult

Si el resultado de la busqueda(no os adjunto el codigo por ser ferragoso) es positivo el formulario se agranda y deja los botones bien colocados

If x <> 0 Then Me.Left = 10: Me.Height = 350: Me.Width = 930:
ListBox1.Top = 96: ListBox1.Width = 920: 'me.Top = Me.Top - 225
CommandButton3.Left = 498: CommandButton2.Left = 424: CommandButton1.Left = 350:
TextBox1.Left = 450: Label1.Left = 350

Si el resultado es negativo sale el MsgBox

If x = 0 Then MsgBox "No localizada coincidencia alguna"

Al clicar el boton aceptar es donde quiero que no varie nada del aspecto del formulario, perola realidad es que me abre el listBox y me mueve los botones donde quiere

If Respuesta = vbOK Then
Usf_Buscar.Left = 250: Usf_Buscar.Height = 330: Usf_Buscar.Width = 457.5: ListBox1.Top = 660
CommandButton3.Left = 264: CommandButton2.Left = 186: CommandButton1.Left = 108:
TextBox1.Left = 192: Label1.Left = 108:: TextBox1.SetFocus

este codigo que le pongo a la respuesta del MsgBox, lo tengo puesto en el ComandButton2 (que hace otras cosas tambien) y funciona perfecto dejando el formulario en su sitio

Perdonad el tocho y mil gracias de antemano
Albert
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas co MsgBox = vbOk

Publicado por Antoni Masana (498 intervenciones) el 26/02/2013 10:52:00
Dim Respuesta As VbMsgBoxResult

Si el resultado de la busqueda(no os adjunto el codigo por ser ferragoso) es positivo el formulario se agranda y deja los botones bien colocados

En este codigio para que sea positivo debes poner:

1
if x > 0 then


en lugar de lo que pones:

1
2
3
4
5
6
7
8
9
10
11
12
13
If x <> 0 Then
   Me.Left = 10
   Me.Height = 350
   Me.Width = 930
   ListBox1.Top = 96
   ListBox1.Width = 920
   Me.Top = Me.Top - 225
   CommandButton3.Left = 498
   CommandButton2.Left = 424
   CommandButton1.Left = 350
   TextBox1.Left = 450
   Label1.Left = 350
end if


Si el resultado es negativo sale el MsgBox

Para el resultado negativo o valor 0 debes poner

1
if x <= 0 then


En lugar de :

1
If x = 0 Then MsgBox "No localizada coincidencia alguna"


Al clicar el boton aceptar es donde quiero que no varie nada del aspecto del formulario, perola realidad es que me abre el listBox y me mueve los botones donde quiere

¿ Quien, cuando y como modificas el valor de la variable Respuesta ?

1
2
3
4
5
6
7
8
9
10
11
12
If Respuesta = vbOK Then
   Usf_Buscar.Left = 250
   Usf_Buscar.Height = 330
   Usf_Buscar.Width = 457.5
   ListBox1.Top = 660
   CommandButton3.Left = 264
   CommandButton2.Left = 186
   CommandButton1.Left = 108
   TextBox1.Left = 192
   Label1.Left = 108
   TextBox1.SetFocus
end if


Lo mejor es ponerlo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
If x <= 0 Then
   MsgBox "No localizada coincidencia alguna"
 
   Usf_Buscar.Left = 250
   Usf_Buscar.Height = 330
   Usf_Buscar.Width = 457.5
   ListBox1.Top = 660
   CommandButton3.Left = 264
   CommandButton2.Left = 186
   CommandButton1.Left = 108
   TextBox1.Left = 192
   Label1.Left = 108
   TextBox1.SetFocus
end if


Como en el MsgBox solo sale una tecla no hace falta asignar la respuesta a una variable, pero en el caso de que fuese necesario conocer el resultyado del MsgBox para tomar una decisión posterior seria asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If x <= 0 Then
   Respuesta = MsgBox("No localizada coincidencia alguna. " & VbCrLf & _
                      "¿Nueva consulta?", vbYesNo, "Titulo")
 
   Usf_Buscar.Left = 250
   Usf_Buscar.Height = 330
   Usf_Buscar.Width = 457.5
   ListBox1.Top = 660
   CommandButton3.Left = 264
   CommandButton2.Left = 186
   CommandButton1.Left = 108
   TextBox1.Left = 192
   Label1.Left = 108
   TextBox1.SetFocus
end if



Por otro lado puedes reducir el formulario y los objetos quedan ocultos porque estan fuera del area visible, puedes ocultar los Objetos con .Visible = False y puedes reordenar todos los objetos cosa que no entiendo por que no lo veo en conjunto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 177
Bronce
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Problemas co MsgBox = vbOk

Publicado por albert (204 intervenciones) el 26/02/2013 19:17:41
Mil gracias, funcionó perfecto
Ya he aprendido algo mas
Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar