Jump to content
DanielaAlcala22

VARIABLES EN USERFORMS

Recommended Posts

Hola a todos! hoy les traigo un problema interesante... 
 

Veran yo quiero que el programa que estoy haciendo sea flexible y le de muchas opciones al usuario. Asi que le di estas 2 opciones al usuario:

1era) Utilizar la densidad del concreto estandar de 2500kgf/m3

2da) Que el mismo introdusca el valor que quiera para la densidad del concreto.

 

En el formulario represente esa toma de decision colocando 2 botones de opcion, como se puede apreciar en la primera imagen. 

Este es el codigo asosiado a estos botones:

Private Sub OptionButton1_Click()

DensiLabel.Visible = False
DensiTextBox.Visible = False

If OptionButton1 = True Then

	DensiFund = 2500

	Worksheets("Procesos Preliminares").Range("P2").Value = DensiFund

End If

End Sub

Private Sub OptionButton2_Click()

DensiLabel.Visible = True
DensiTextBox.Visible = True
    
    If OptionButton2 = True Then
    
    DensiFund= DensiTextBox.Value
    
    Worksheets("Procesos Preliminares").Range("P2").Value = DensiFund
    
    End If
    
End Sub

Como veran si elijo la opcion 1 la variable DensiFund tendra un valor de 2500, pero si se escoje la opcion 2 la variable DEBERIA adoptar el valor que se le introdusca en la casilla de texto DensiTextBox (Asi llame yo a esa casilla). El problema es que por alguna razon que desconosco cuando pincho el OptionButton2 la variable no adquiere el valor que he introducido en la casilla ya mencionada. Esto es muy importante por que luego de que en el codigo de este formulario se le asigne el valor a la variable DensiFund, la tengo que utilizar en el codigo de otro formulario para calcular el peso del cimiento, por esta razon, en antes del codigo adjunto escribi: "Public DensiFund", con el fin de que dicha variable se pueda usar en cualquier parte del proyecto de excel. 

Apreciaria mucho mucho su ayuda! lo antes posible. Por favor diganme por q mi codigo no funciona Dx que estoy haciendo mal?

1u.png

Share this post


Link to post
Share on other sites

Las variables públicas deben definirse en un módulo.

Si el formulario lo ocultas (Hide), en lugar de descargarlo(Unload), los valores de los controles del formulario pueden ser usados en cualquier otro formulario. 

Lo mismo ocurre si muestras los formularios como modal, uno después de otro.

No subas imágenes, con las  imágenes no hacemos nada, mejor sube tu archivo.

Share this post


Link to post
Share on other sites

.

Elimina de todos los formularios y macros en los que pudieras tener la definición de la variable DensiFund, ya sea pública o privada.

En tu proyecto VBA tienes 6 módulos, LimpiarCampos, Módulo1, Módulo2, Módulo3, Módulo4, Módulo5.

Añáde como primera línea en cualquiera de los módulos una sola vez Public DensiFund As ..............

Sería conveniente que revisaras en la ayuda de VBA la definición y ambito de actuación de las variables.

Share this post


Link to post
Share on other sites

@Antoni, acabo de hacer lo que me sugeriste en tu ultimo comentario. Elimine de los formularios la declaracion de Public DensiFund y lo coloque en la primera linea de una de mis macros. Y en cuanto Pincho el OpttionButtom2 de una me sale un arror de compilacion "No se ha definido el tipo definido por el usuario" y me lleva al modulo en el que declare la Variable

Edited by DanielaAlcala22

Share this post


Link to post
Share on other sites

@Antoni, De verdad estaria muy agradecida si lograra que esos botones de opcion hicieran lo que quiero :(... y es que se que mi planilla es algo complicada pero como es parte de mi tesis de ingenieria Civil de verdad deseo que quede un buen acabado...

Edited by DanielaAlcala22

Share this post


Link to post
Share on other sites

Te dejo la solución @DanielaAlcala22 . El problema es cómo pasas el valor de DensiFund en las zapatas. Al poner el valor personalizado, no lo puedes poner en el evento Click del OptionButton2

En el mismo evento le dices que se haga visible el textbox y su valor lo pase a la hoja, peeeero... lo hace antes de que pongas el valor en el textbox, por eso pasa un valor en blanco.

Primero tienes que rellenar el txtbox y luego pasar su valor. Para eso lo tienes que hacer desde otro comando, que en este caso es cuando das a Siguiente, en ese caso, primero comprueba que el optionbutton está activo y entonces coje el valor del textbox a la hoja.

No puedes pasar un valor personalizado dependiente de un optionbutton en su propio evento, pero sí una constante como en el caso del optionbutton1, pues no requiere la acción del usuario para poner el valor.

Manual Automatizado

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.



×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png