2017-07-21 5 views
0

ユーザーフォームのチェックボックスから値を取得するのに問題があります。私が持っている問題は、ユーザーフォームがシートからの値に基づいて可変数のチェックボックスを作成することです。このためコード:VBAがユーザーフォームからチェックボックスの値を取得する

Private Sub UserForm_Initialize() 

Dim LastRow As Long 
Dim i As Long 
Dim Teller As Long 
Dim chkBox As MSForms.CheckBox 

Teller = 1 
LastRow = Worksheets("Sheet").Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To LastRow 
    If Worksheets("Sheet").Cells(i, 1).Value = Worksheets("Sheet").Range("S1").Value Then 
     Set chkBox = Me.Controls.Add("Forms.CheckBox.1", "CheckBox_" & Teller) 
     chkBox.Caption = Worksheets("Sheet").Cells(i, 9).Value 
     chkBox.Left = 5 
     chkBox.Top = 25 + ((Teller - 1) * 20) 
     Teller = Teller + 1 
    End If 
Next i  
End Sub 

だから、これはCheckBox_1という名前のチェックボックスの数を作成し、CheckBox_2など 問題は、私はモジュールにCheckBox_1の値を取得しようとすると、私ので、CheckBox_1がまだ作成されていないですそれを使うことができません。

Dim x as String 
With UserForm4 
    .Show 
    x = .CheckBox_1 
    MsgBox (x) 
    End 
End With 

答えて

1

テキストボックスはフォームのプロパティではなく、コントロールをループする必要があります。

+1

**必ず**コントロールをループする必要はありません - x = .Controls( "CheckBox_1")。値は、OPが最初のものを望むことを知っている場合に機能します。 (しかし、明らかに 'x = .Controls(" CheckBox_ "&i).Value'はループが必要な場合に使用できます。) – YowE3K

+0

@ YowE3Kこれはうまくいきました!お二人のおかげです。 – Stan

関連する問題