Scope de las userform

rguez

Board Regular
Joined
Jul 24, 2002
Messages
78
Mis saludos

Tengo dudas de como se maneja el scope de las variable para las userform.

En palabras sencillas, como puedo dar por argumento una variable como entrada a una userform sin que la variable tenga que ser publica

Los evento de entrada "activate" hasta donde se no admiten argumentos de entrada y la invocación de una userform tampoco admite un objeto de salida.

lo ideal sería poder hacer algo como:

resultado=mi_userform.show (argumento_de_entrada)

:help:
 

Excel Facts

What does custom number format of ;;; mean?
Three semi-colons will hide the value in the cell. Although most people use white font instead.
Hay un par de opciones. Aquí le doy la más sencilla que es utilizar controles escondidos (su propiedad de .Visible es FALSE) y se usa el método de .Activate en vez de .Initialize.

Para usar este ejemplo haga un UserForm con dos etiquetas (Label1 y Label2), un Textbox (TextBox1) y un botón (CommandButton1). Label1 es escondido.

Este código se encuentra en el UserForm:
<font face=Courier New>
<SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> CommandButton1_Click()
    Me.Hide
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>

<SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> UserForm_Activate()
    <SPAN style="color:#00007F">If</SPAN> Me.Label1 = "Tuesday" <SPAN style="color:#00007F">Then</SPAN>
        Me.Label2 = "Hoy es martes"
    <SPAN style="color:#00007F">Else</SPAN>
        Me.Label2 = "Hoy no es martes"
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>

Y este se encuentra en un módulo normal (standard module):
<font face=Courier New><SPAN style="color:#00007F">Sub</SPAN> uf_example()
    Load UserForm1
    <SPAN style="color:#00007F">With</SPAN> UserForm1
        .Label1 = "Tuesday"
        .Show
        MsgBox .Label1 & vbCr & .TextBox1
        .Label1 = "Monday"
        .Show
        MsgBox .Label1 & vbCr & .TextBox1
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">With</SPAN>
    Unload UserForm1
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN>
</FONT>

Como usted verá, aunque el formulario está escondido, los valores siguen en existencia hasta que haga un UNLOAD.

Saludos,
 
Upvote 0

Forum statistics

Threads
1,223,943
Messages
6,175,552
Members
452,652
Latest member
eduedu

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top