Dimitar Todorov
Dimitar Todorov

Reputation: 21

Reading Userform Object Values

I created a Userform (manually in the VBA Projectbrowser). I have written VBA code, which fills this Userform with different Objects in runtime (Labels, Optionbuttons etc.). So far everything worked fine

The Userform is filled with data read from my Excel sheets and correctly displayed. However I'm not able to read the inputs from the objects on it (for example Optionbutton - TRUE or FALSE). These objects do not appear anywhere (except on the userform) so that I can link them and use them in another Module.

I guess they are only displayed and not really read into the memory or whatever (initialized !?).

Upvotes: 1

Views: 775

Answers (1)

Siddharth Rout
Siddharth Rout

Reputation: 149287

There are two ways to go about it.

WAY 1

Declare your option button object as Public.

Module Code

Public theOpBut As Object

Sub Fill()
    If theOpBut.Value = True Then
        ActiveSheet.Cells(1, 5) = 1
    Else
        ActiveSheet.Cells(1, 5) = "NO"
    End If
End Sub

Userform Code

Private Sub UserForm_Initialize()
    Set theOpBut = UserForm1.Controls.Add("Forms.optionbutton.1", "OptionButton", True)
        With theOpBut
        .Caption = "Test Button"
        '.GroupName = OpButGroupCounter
        .Top = 10
        .Left = 20
        .Height = 16
        .Width = 50
        .Font.Size = 12
        .Font.Name = "Ariel"
    End With
End Sub

Private Sub CommandButton1_Click()
    Call Fill
End Sub

WAY 2

Declare a Boolean Variable and create a click event of the Option button and then set the value of the Boolean Variable in that click event. To create the click event of the Option button at Run Time, see THIS EXAMPLE

You can then check the value of Boolean Variable in Sub Fill() and act accordingly.

Upvotes: 1

Related Questions