Excel VBA ユーザーフォームにコマンドボタンの追加と詳細設定する方法

コントロール作成/操作

ユーザーフォームにコマンドボタンを追加する方法と、詳細設定の方法をご説明します。

コマンドボタンはそれ自体はただのボタンで、基本的にボタンにマクロを登録しておいて、クリックした際に登録されたマクロを実行するために使用します。

たとえば各ユーザーフォームに「戻る」、「閉じる」、「TOP」などのユーザーフォームを遷移するための機能を組み込むなどに使用したりと、とても使用頻度が高いコントロールです。

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

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

その他のユーザーフォームの操作については下記記事をご覧ください。

1.ツールボックスでコマンドボタンを追加する

まずは、ツールボックスでコマンドボタンを追加する方法です。

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

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

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

コマンドボタンを選択します。

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

すると下記図のように、コマンドボタンが追加されます。

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

コマンドボタンを大まかな位置に設置したら、次はプロパティウィンドウで詳細設定をします。

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

プロパティ一覧

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

プロパティ名説明
オブジェクト名コントロールの名前を指定します。
Acceleratorコントロールのアクセラレータキーを指定します。
AutoSizeコマンドボタンの文字列に合わせて文字列の表示領域を自動で調整するか指定します。
BackColorコマンドボタンの背景色をシステムまたは、カラーパレットで指定します。
BackStyleコマンドボタンの背景のスタイルを指定します。
Cancelコマンドボタンを「キャンセルボタン」に指定するか設定します。
Captionコマンドボタンに文字列を指定します。
ControlTipTextマウスポインターをコントロール上に置いたとき、表示する文字列を指定します。
Defaultこのコマンドボタンを「デフォルト」のボタンに指定するか設定をします。
Enabled通常の表示と操作が出来るか指定します。
Fontコマンドボタンに設定された文字列のフォントの種類やサイズを指定します。
ForeColorコマンドボタンに設定された文字列の色を指定します。
Heightコマンドボタンの高さを指定します。
HelpConTextID指定したオブジェクトと関連付けるヘルプのコンテキストIDを指定します。
Leftコマンドボタンの位置をフォームの左端を0として、ポイント単位で指定します。
Lockedコマンドボタンを編集できるか指定します。
MouseIconマウスポインターがコマンドボタン上にあるときの、アイコンファイルを指定します。
MousePointerマウスポインターがコマンドボタンに移動したとき表示されるポインターの種類を指定します。
Pictureコマンドボタンの背景に設定する画像ファイルを指定します。
PicturePositionピクチャのキャプションに対する相対位置を指定します。
TabIndexコマンドボタンにフォーカスをあてる順番を指定します。
TabStopTabIndexの有効/無効を指定します。
TakeFocusOnClickマウスでコマンドボタンをクリックした際にフォーカスを移すか指定ます。
Topコマンドボタンの位置をフォームの上端を0としてポイント単位で指定します。
Visibleコマンドボタンの表示/非表示を切り替えます。
Widthコマンドボタンの幅をポイント単位で指定します。
WordWrapコマンドボタン内の文字列がコマンドボタンの幅を超えたときの折り返しを指定します。
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コントロール中央に表示され、水平および垂直方向の中央に配置されます。

3.VBAでコマンドボタンを追加する方法

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

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

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

コマンドボタンのコントロールIDは「Forms.CommandButton.1」です。

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

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

4.サンプルコード

コマンドボタンを追加するサンプルコード

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

また、コマンドボタンを追加する際にオブジェクト名に、コマンドボタンと判定できるような名前に指定する事をおすすめします。

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

Sub Sample1()

Dim MyCtrl As Object

With UserForm1

    Set MyCtrl = .Controls.Add("Forms.CommandButton.1", "MyCom", True)
    
    .Show vbModeless

End With

End Sub

Captionなども何もないコマンドボタンがユーザーフォームの左上に追加されます。

コマンドボタンの詳細設定をするサンプルコード

コマンドボタンを追加して、位置やサイズ、文字の設定等の詳細設定をするコードになります。

Sub Sample2()

Dim MyCtrl As Object

With UserForm1

    Set MyCtrl = .Controls.Add("Forms.CommandButton.1", "MyCom", True)
    
    With MyCtrl
        .Top = 24                           'Top位置
        .Left = 18                          'Left位置
        .Height = 20                        '高さ
        .Width = 100                        '幅
        .ForeColor = RGB(0, 0, 0)           '文字色
        .Font.Name = "メイリオ"             'テキストのスタイル
        .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.CommandButton.1", "MyCom" & i, True)
        
        With MyCtrl
            .Top = 24 * i                       'Top位置
            .Left = 18                          'Left位置
            .Height = 20                        '高さ
            .Width = 100                        '幅
            .ForeColor = RGB(0, 0, 0)           '文字色
            .Font.Name = "メイリオ"             'テキストのスタイル
            .FontSize = 10                      'テキストのサイズ
            .TabIndex = i                       'タブキーの移動の順番を指定する
            .Caption = "Sample" & i             '項目名
        End With
    
    Next i
    
    .Show vbModeless

End With

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