いつも大変御世話になっております。
WiindowsXP環境にある【D:\】フォルダ内に【マクロ.xls】があります。
その中にユーザーフォームがあり、そこにはチェックボックスとコマンドボタンがあります。
コマンドボタンを押すと、そのユーザーフォーム内でチェックされたチェックボックスの数を
取得して変数Check_Numberに格納する処理を入れたいのですが、取得方法がわかりません。
例:チェックボックスを2つチェックした状態でコマンドボタンを押すと、【2】が
変数Check_Numberに格納される。
コマンドボタン実行プログラムをこんな↓感じで書きましたが、
これではチェックボックス総数が変更する度に
Check_Number_SUMの値を変更しなければいけない為、
汎用性に欠けます。
Private Sub CommandButton1_Click()
Dim Check_Number_SUM As Long
Dim Check_Number As Long
Dim i As Long
'チェックボックス総数設定
Check_Number_SUM = 2
'チェックボックス総数取得
For i = 1 To Check_Number_SUM
If Me.Controls("CheckBox" & i).Value = True Then
Check_Number = Check_Number + 1
End If
Next i
MsgBox Check_Number
End Sub
もっと汎用性が高いコード設計は可能でしょうか?
もしご存知の方がいらっしゃるようでしたら、お手数ですがご教授願いますでしょうか?
以上、何卒宜しくお願い致します。
こんな感じは?
チェックボックスの頭8文字が、"CheckBox" と共通であればの話ですが。
Dim ctl As Control
Dim i As Long
For Each ctl In Me.Controls
If Left(ctl.Name, 8) = "CheckBox" Then
i = i + ctl.Value * (-1)
End If
Next ctl
MsgBox i