Foros del Web » Soporte técnico » Ofimática »

Problema con Variables Globales

Estas en el tema de Problema con Variables Globales en el foro de Ofimática en Foros del Web. Hola colegas, hice un cambio en mi codigo, lo que normalmente utilizaba era un: opcion=msgbox en determinado momento con opcion si/no , luego si opcion ...
  #1 (permalink)  
Antiguo 06/09/2007, 07:36
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Problema con Variables Globales

Hola colegas, hice un cambio en mi codigo, lo que normalmente utilizaba era un:

opcion=msgbox en determinado momento con opcion si/no

, luego si opcion = vbyes, ... o vbno ...

Lo que necesito es cambiar esto, 2 botones en un formulario que ya tengo, es decir:


'se ejecuta el macro,

Global opcion as integer 'supongo que podria ser boolen, pero creo que no cambia

sub prueba()

load userform1
userform1.show

'una vez que aparece el formulario tiene 2 botones

if opcion="continuar" then
...
end if

if opcion="cancelar"then
-------
end if

end sub


------------------------------

y luego doble click en c/ boton, y le agregue

opcion="continuar" ' al btn 1

opcion="cancelar" ' al btn 2



Hice mil pruebas, y no logro hacer que ande, creo que deberia andar por logica, pero no he podido, alguna idea?
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #2 (permalink)  
Antiguo 06/09/2007, 15:11
Avatar de abrahamvj  
Fecha de Ingreso: julio-2006
Ubicación: Lima, Peru
Mensajes: 708
Antigüedad: 17 años, 8 meses
Puntos: 18
Re: Problema con Variables Globales

No entendi amigo :(

Abraham
  #3 (permalink)  
Antiguo 06/09/2007, 21:18
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: Problema con Variables Globales

Perdon, arranco de nuevo, en una parte del codigo que tengo, un msgbox, con vbQuestion y los clasicos 2 botones (si y no) para optar sobre como seguir.

Bien, quiero cambiar esto, y hacer exactamente lo mismo, pero con un formulario hecho por mi (insertado y diseñado a mi gusto), no por un formulario predeterminado por windows.

El problema es que no logro con mi limitado conocimiento, reproducir el funcionamiento de un msgbox predeterminado, en un formulario mio. Lo mejor que pude hacer es lo que figura en mi anterior post, pero al accionar los botones, el codigo no responde. Ojala se entienda mejor :D
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #4 (permalink)  
Antiguo 07/09/2007, 03:47
Avatar de milolo  
Fecha de Ingreso: mayo-2007
Ubicación: Huelva. España
Mensajes: 63
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Problema con Variables Globales

Vamos a ver si te puedo ayudar un poquillo. Antes de nada te advierto que yo no soy ningún experto programando, más bien soy novatillo

Para empezar he creado un pequeño macro que escribe en la casilla activa la palabra "prueba", la pone en negrita y posteriormente se desplaza una casilla hacia abajo.

He creado un formulario con dos botones:

boton "Continuar"
boton "Cancelar"

Si pulso en Continuar, al lado de la casilla activa escribe un "si"
Si pulso en Cancelar, al lado de la casilla activa escribe "no"

Y por último he introducido el código del macro en un bucle do while-loop de froma que siga ejecutandose el macro siempre y cuando el valor de la celda de al lado de la casilla activa sea igual a "si".


Todo esto quedaría así:

Código macro:

Sub ejemplo()


Sheets("Hoja1").Activate

Do While ActiveCell.Offset(0, 1).Value = "si"

ActiveCell.Value = "prueba"
ActiveCell.Font.Bold = True
ActiveCell.Offset(1, 0).Select
UserForm1.Show

Loop

End Sub

Código formulario:

boton1("Continuar"):


Private Sub CommandButton1_Click()

ActiveCell.Offset(0, 1).Value = "si"
UserForm1.Hide

End Sub

boton2("Cancelar"):

Private Sub CommandButton2_Click()

ActiveCell.Offset(0, 1).Value = "no"
UserForm1.Hide

End Sub




La verdad es que es un poco/bastante cutre....

Lo suyo sería definir una variable dentro del userform1 y realizar el bucle "while" siempre y cuando el valor de dicha variable sea un valor determinado(por ejemplo un "si"). El problema es que no se como definir una variable en un userform1 y que luego me la reconozca en el macro (modulo1).

Un saludo
  #5 (permalink)  
Antiguo 08/09/2007, 00:42
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: Problema con Variables Globales

Hola milolo, creo que en el fina de tu explicasion es donde yo me he quedado, segun vi, vos almacenas tu "variable" por llamarlo de alguna manera, directamente en la hoja de calculo, mi idea era no modifcar este, sino hacerlo a traves de una variable.

En otro lenguaje como action script, se maneja con variables globales para comunicarse entre lo que aca serian 2 macros distintos, pero aca repeti lo mismo y no me funciono.

Alguien sabe como se haria?
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #6 (permalink)  
Antiguo 08/09/2007, 15:36
Avatar de Pablus00  
Fecha de Ingreso: diciembre-2003
Ubicación: A un click de distancia
Mensajes: 1.044
Antigüedad: 20 años, 4 meses
Puntos: 11
Re: Problema con Variables Globales

Hola Minolo, estube viendo tu codigo ;) a ver si lo hacia como vos contabas, pero note que el funcionamiento no es como un un msgbox, con vbQuestion...

La clave que tiene ese recurso es que detiene el codigo hasta no recibir una respuesta, en vez de usar un bucle para comprobar si se obtuvo un valor.

Como se hace para detener el codigo hasta no recibir, por ejemplo el valor de un boton?
__________________
-- Nunca te des por vencido, aún vencido -- Web
  #7 (permalink)  
Antiguo 10/09/2007, 02:35
Avatar de milolo  
Fecha de Ingreso: mayo-2007
Ubicación: Huelva. España
Mensajes: 63
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: Problema con Variables Globales

Cita:
Iniciado por Pablus00 Ver Mensaje
Hola Minolo, estube viendo tu codigo ;) a ver si lo hacia como vos contabas, pero note que el funcionamiento no es como un un msgbox, con vbQuestion...

La clave que tiene ese recurso es que detiene el codigo hasta no recibir una respuesta, en vez de usar un bucle para comprobar si se obtuvo un valor.

Como se hace para detener el codigo hasta no recibir, por ejemplo el valor de un boton?
Uff, hasta ahí ya no llego ya te dije que era novatillo en esto...

Creo que vas a tener que esperar a que te contesten los maestros en macros, que por aquí hay unos pocos

Suerte!
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 15:30.