Excel VBA ユーザーフォームにチェックボックスの追加と詳細設定する方法

コントロール作成/操作

ユーザーフォームにチェックボックスを追加する方法と詳細設定の方法をご説明します。

チェックボックスは複数の項目を選択してもらう場合や、有/無などの切り替えなどにも使用します。

追加するにはツールボックスから追加する方法と、VBAから追加する方法がありますので、順にご説明します。

また、サンプルコードではループを使用して複数のコントロールの追加や、詳細設定するコードも記載したいと思います。

その他のコントロールの操作については下記記事をご覧ください。

1.ツールボックスでチェックボックスを追加する

まずは、ツールボックスでチェックボックスを追加する方法です。

ユーザーフォームの作成がまだの方は、VBE→挿入タブ→ユーザーフォームを選択してUserFormを作成してください。

ツールボックスが表示されていない方は、メニューの実行ボタンや停止ボタンの並びにあるツールボックスボタンをクリックしてください。

もしくは表示タブのツールボックスを選択する事で表示出来ます。

チェックボックスを選択します。

選択したら、ユーザーフォーム上の設置したい位置でユーザーフォームをクリックします。

すると下記図のように、チェックボックスが追加されます。

2.プロパティウィンドウで詳細設定する

チェックボックスを大まかな位置に設置したら、次はプロパティウィンドウで詳細設定をします。

詳細設定と言ってもプロパティの種類が多すぎますので、一覧で簡単に説明します。

プロパティ一覧

定数の説明があるプロパティは赤字になっています。

プロパティ名説明
オブジェクト名コントロールの名前を指定します。
Acceleratorコントロールのアクセラレータキーを指定します。
Alignment設定するCaptionの文字列の位置を指定します。
AutoSizeチェックボックスの文字列に合わせて文字列の表示領域を自動で調整するか指定します。
BackColorチェックボックスの背景色をシステムまたは、カラーパレットで指定します。
BackStyleチェックボックスの背景のスタイルを指定します。
Captionチェックボックスに文字列を指定します。
ControlSourceチェックボックスにリンクさせるセルを指定します。
ControlTipTextマウスポインターをコントロール上に置いたとき、表示する文字列を指定します。
Enabled通常の表示と操作が出来るか指定します。
Fontチェックボックスに設定された文字列のフォントの種類やサイズを指定します。
ForeColorチェックボックスに設定された文字列の色を指定します。
GroupName複数のチェックボックスをグループ化した場合、グループ名を指定します。
Heightチェックボックスの高さを指定します。
HelpConTextID指定したオブジェクトと関連付けるヘルプのコンテキストIDを指定します。
Leftチェックボックスの位置をフォームの左端を0として、ポイント単位で指定します。
Lockedチェックボックスを編集できるか指定します。
MouseIconマウスポインターがチェックボックス上にあるときの、アイコンファイルを指定します。
MousePointerマウスポインターがチェックボックスに移動したとき表示されるポインターの種類を指定します。
Pictureチェックボックスの背景に設定する画像ファイルを指定します。
PicturePositionピクチャのキャプションに対する相対位置を指定します。
SpecialEffectチェックボックスの表面の立体表示を指定します。
TabIndexチェックボックスにフォーカスをあてる順番を指定します。
TabStopTabIndexの有効/無効を指定します。
TextAlignチェックボックスに設定されたキャプションのチェックボックス内の位置を指定します。
Topチェックボックスの位置をフォームの上端を0としてポイント単位で指定します。
Visibleチェックボックスの表示/非表示を切り替えます。
Widthチェックボックスの幅をポイント単位で指定します。
WordWrapチェックボックス内の文字列がチェックボックスの幅を超えたときの折り返しを指定します。
Alignmentの定数一覧

「fmAlignmentRight」が既定値となります。

定数名説明
fmAlignmentLeft0左側に指定します。
fmAlignmentRight1右側に指定します。
BackStyleの定数一覧

「fmBackStyleOpaque」が既定値となります。

定数名説明
fmBackStyleTransparent0背景を透明に指定します。
fmBackStyleOpaque1背景を不透明に指定します。
MousePointerの定数一覧

「fmMousePointerDefault」が既定値となります。

定数名内容
fmMousePointerDefault0標準ポインター
fmMousePointerArrow1矢印
fmMousePointerCross2十字ポインター
fmMousePointerIBeam3Iビーム
fmMousePointerSizeNESW6右上と左下を指し示す両端矢印
fmMousePointerSizeNS7上と下を指し示す両端矢印
fmMousePointerSizeNWSE8左上と右下を指し示す両端矢印
fmMousePointerSizeWE9左と右を指し示す両端矢印
fmMousePointerUpArrow10上向き矢印
fmMousePointerHourglass11砂時計
fmMousePointerNoDrop12ドラッグされているオブジェクトに重なった不可シンボル無効なターゲット。
fmMousePointerAppStarting13矢印と砂時計
fmMousePointerHelp14矢印と疑問符
fmMousePointerSizeAll15サイズ変更カーソル (上下左右を指し示す矢印)
fmMousePointerCustom99MouseIcon プロパティで指定されたアイコンを使用します。
PicturePositionの定数一覧

「fmPicturePositionAboveCenter」が既定値となります。

定数名内容
fmPicturePositionLeftTop0ピクチャがキャプションの左側に表示され、上端に配置されます。
fmPicturePositionLeftCenter1ピクチャがキャプションの左側に表示され、中央に配置されます。
fmPicturePositionLeftBottom2ピクチャがキャプションの左側に表示され、下端に配置されます。
fmPicturePositionRightTop3ピクチャがキャプションの右側に表示され、上端に配置されます。
fmPicturePositionRightCenter4ピクチャがキャプションの右側に表示され、中央に配置されます。
fmPicturePositionRightBottom5ピクチャがキャプションの右側に表示され、下端に配置されます。
fmPicturePositionAboveLeft6ピクチャがキャプションの上に表示され、左端に配置されます。
fmPicturePositionAboveCenter7ピクチャがキャプションの上に表示され、中央に配置されます。
fmPicturePositionAboveRight8ピクチャがキャプションの上に表示され、右端に配置されます。
fmPicturePositionBelowLeft9ピクチャがキャプションの下に表示され、左端に配置されます。
fmPicturePositionBelowCenter10ピクチャがキャプションの下に表示され、中央に配置されます。
fmPicturePositionBelowRight11ピクチャがキャプションの下に表示され、右端に配置されます。
fmPicturePositionCenter12コントロールの中央に表示され、水平および垂直方向の中央に配置されます。
TextAlignの定数一覧

「fmTextAlignLeft」が既定値となります。

定数名位置
fmTextAlignLeft1左揃え
fmTextAlignCenter2中央揃え
fmTextAlignRight3右揃え

3.VBAでチェックボックスを追加する方法

VBAでコントロールの追加は次のように記述します。

Set Object = UserForm1.Controls.Add("Forms.CheckBox.1","コントロールの名前","オブジェクトの表示")

コントロールオブジェクトに「Addメソッド」で追加して操作します。

チェックボックスのコントロールIDは「Forms.CheckBox.1」です。

コントロールの種類とコントロールの名前、オブジェクトの表示をTrue、Falseで指定します。

オブジェクトの表示」は省略可能で、省略した場合は既定値がTrueになります。

4.サンプルコード

チェックボックスを追加するサンプルコード

何も指定しないと左上にデフォルト設定の状態で追加されます。

また、チェックボックスを追加する際にオブジェクト名に、チェックコントロールと判定できるような名前に指定する事をおすすめします。

追加後にVBAでコントロールを特定する際に簡単になります。

Sub Sample1()

Dim MyCtrl As Object

With UserForm1

    Set MyCtrl = .Controls.Add("Forms.CheckBox.1", "MyCheck", True)
    
    .Show vbModeless

End With

End Sub

チェックボックスの詳細設定をするサンプルコード

Sub Sample2()

Dim MyCtrl As Object

With UserForm1

    Set MyCtrl = .Controls.Add("Forms.CheckBox.1", "MyCheck", True)
    
    With MyCtrl
        .Top = 24                           'Top位置
        .Left = 18                          'Left位置
        .Height = 20                        '高さ
        .Width = 100                        '幅
        .ForeColor = RGB(0, 0, 0)           '文字色
        .Font.Name = "メイリオ"             'テキストのスタイル
        .TextAlign = 2                      'テキストの位置
        .FontSize = 10                      'テキストのサイズ
        .TabIndex = 1
        .Caption = "Sample1"                '項目名
    End With

    .Show vbModeless

End With

End Sub

ループで複数のチェックボックスを追加するサンプルコード

Sub Sample3()

Dim MyCtrl  As Object
Dim i       As Long

With UserForm1

    For i = 1 To 5
    
        'チェックボックスの名前に番号を付ける
        Set MyCtrl = .Controls.Add("Forms.CheckBox.1", "MyCheck"  & i, True)
        
        With MyCtrl
            .Top = 24 * i                       'Top位置
            .Left = 18                          'Left位置
            .Height = 20                        '高さ
            .Width = 100                        '幅
            .ForeColor = RGB(0, 0, 0)           '文字色
            .Font.Name = "メイリオ"             'テキストのスタイル
            .TextAlign = 2                      'テキストの位置
            .FontSize = 10                      'テキストのサイズ
            .TabIndex = i                       'タブキーの移動の順番を指定する
            .Caption = "Sample" & i             '項目名
        End With
    
    Next i
    
    .Show vbModeless

End With

End Sub

チェックボックスのチェックを操作するサンプルコード

チェックボックスのチェックを操作するにはコントロールを「True/False」で指定するだけになります。

Sub Sample4()

Dim MyCtrl  As Object
Dim i       As Long

With UserForm1

    For i = 1 To 5
    
        'チェックボックスの名前に番号を付ける
        Set MyCtrl = .Controls.Add("Forms.CheckBox.1", "MyCheck", True)
        
        With MyCtrl
        
            .Top = 24 * i                       'Top位置
            .Left = 18                          'Left位置
            .Height = 20                        '高さ
            .Width = 100                        '幅
            .ForeColor = RGB(0, 0, 0)           '文字色
            .Font.Name = "メイリオ"             'テキストのスタイル
            .TextAlign = 2                      'テキストの位置
            .FontSize = 10                      'テキストのサイズ
            .TabIndex = i                       'タブキーの移動の順番を指定する
            .Caption = "Sample" & i             '項目名
            
        End With
    
        MyCtrl = True
    
    Next i
    
    .Show vbModeless

End With

End Sub
タイトルとURLをコピーしました