Sample Macro  コントロール・トグルボタン Previous Next

7-1) トグルボタンの状態を取得する このページのトップへ もくじへ 使用可能なExcelのバージョン
'=================================================================================
 ◆ユーザーフォームのコード◆
'---------------------------------------------------------------------------------
 トグルボタンの状態を調べて表示する
'---------------------------------------------------------------------------------
Private Sub UserForm_Click()                'ユーザーフォームでクリック時に動作するマクロ
Dim TBName(3) As Object                         'オブジェクトを参照する変数

    Set TBName(1) = ToggleButton1               'オブジェクトを変数に代入する
    Set TBName(2) = ToggleButton2
    Set TBName(3) = ToggleButton3

    For t = 1 To 3                              '変数tの値が1から3になるまで
        onoff = TBName(t).Value                 'トグルボタンの状態を取得する
        If onoff Then                           'トグルボタンがオン(True)の状態なら
            a = a + 1                           '変数aに 1加える
        End If
    Next                                        '繰り返す
    MsgBox "オン(True)は全部で " & a, vbInformation, "すぐマク" 'オンの数を表示する
End Sub
'---------------------------------------------------------------------------------
 例えば ToggleButton1~ToggleButton672 という名前のトグルボタンの場合  
'---------------------------------------------------------------------------------
Private Sub UserForm_Click()                'ユーザーフォームでクリック時に動作するマクロ
Dim i As Long
Dim myCnt As Long

    For i = 1 To 672				'672=7×24×4
        If Controls("ToggleButton" & i).Value Then myCnt = myCnt + 1 '※1
    Next
    MsgBox myCnt
End Sub
'---------------------------------------------------------------------------------
 トグルボタンの名前がバラバラの場合  
'---------------------------------------------------------------------------------
Private Sub UserForm_Click()                'ユーザーフォームでクリック時に動作するマクロ
Dim myCtrl As Control
Dim myCnt As Long

    For Each myCtrl In Controls
        If TypeName(myCtrl) = "ToggleButton" Then
        If myCtrl.Value Then myCnt = myCnt + 1
        End If
    Next
    MsgBox myCnt
End Sub
'=================================================================================
<コメント>
※1 Controlsコレクションのオブジェクト名を変化させている
くわしい解説が、オブジェクト名を変化させながら使うには にあります

Excel VBA Macro