VBAでのコマンドボタン(CommandButton)の使い方とプロパティおよびイベント

Excel VBA からコマンドボタン(CommandButton)コントロールを利用する方法です。コマンドボタンはクリックされたときにあらかじめ設定した処理を実行したい場合に使用されるコントロールです。ここでは Excel のユーザーフォームで設置できるコマンドボタンを VBA から使用する方法と、コマンドボタンで設定可能なプロパティおよびイベントの一覧について解説します。

(Last modified: )

コマンドボタンのプロパティ一覧

ユーザーフォームに設置するコマンドボタンで利用可能なプロパティ一覧は次の通りです。

コマンドボタンの既定のプロパティは Value プロパティです。

いくつかのプロパティについてはこのあと簡単に解説します。

コマンドボタンに表示する文字列を設定する(Caption)

コマンドボタンに表示される文字列を設定するには Caption プロパティに値を設定します。

オブジェクト.Caption [= String ]

コマンドボタンに表示する文字列を代入してください。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、コマンドボタンに表示する文字列を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Open"
End Sub

コマンドボタンに表示する文字列を設定する(Caption)(1)

コマンドボタンに表示する文字列を設定する(Caption)(2)

ユーザーフォームを表示すると、表示されたコマンドボタンに指定した文字列が表示されているのが確認できます。

コマンドボタンに表示する文字列を設定する(Caption)(3)

コマンドボタンの表示位置を設定する(Top,Left)

コマンドボタンが表示される位置を設定するには Top プロパティと Left プロパティに値を設定します。

オブジェクト.Top [= Single ]
オブジェクト.Left [= Single ]

Top プロパティにはユーザーフォームの上端からコマンドボタンの上端までの距離、 Left プロパティにはユーザーフォームの左端からコマンドボタンの左端までの距離をそれぞれ単精度浮動小数点型の数値で代入します。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、コマンドボタンの位置を設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    CommandButton1.Top = 100
    CommandButton1.Left = 80
End Sub

コマンドボタンの表示位置を設定する(Top,Left)(1)

コマンドボタンの表示位置を設定する(Top,Left)(2)

ユーザーフォームを表示すると、表示されたコマンドボタンが指定した位置で表示されているのが確認できます。

コマンドボタンの表示位置を設定する(Top,Left)(3)

コマンドボタンの幅と高さを設定する(Width,Height)

コマンドボタンの幅と高さを設定するには幅については Width プロパティ、高さについては Height プロパティに値を設定します。

オブジェクト.Width [= Single ]
オブジェクト.Height [= Single ]

幅および高さをあらわす単精度浮動小数点型の数値を代入してください。単位はポイントです。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、コマンドボタンの幅と高さを設定しています。

Option Explicit

Private Sub UserForm_Initialize()
    CommandButton1.Width = 100
    CommandButton1.Height = 100
End Sub

コマンドボタンの幅と高さを設定する(Width,Height)(1)

コマンドボタンの幅と高さを設定する(Width,Height)(2)

ユーザーフォームを表示すると、表示されたコマンドボタンの幅および高さが指定した値に設定されているのが確認できます。

コマンドボタンの幅と高さを設定する(Width,Height)(3)

コマンドボタンにアクセスキーを設定する(Accelerator)

コマンドボタンにアクセスキーを設定するには Accelerator プロパティに値を設定します。

オブジェクト.Accelerator [= String ]

アクセスキーとして設定する文字を代入します。アクセスキーに設定した文字がコマンドボタンに表示されている文字列の中にあった場合は、該当の文字に下線が表示されます。

Alt を押しながらアクセスキーとして設定した文字を押すと、コマンドボタンがクリックされたときと同じように実行されます。

具体的には次のように記述します。下記ではユーザーフォームが表示される前に発生する Initialize イベントに対するイベントプロシージャにコードを記述し、アクセスキーとして "O" の文字を設定しています。また動作の確認のため、コマンドボタンがクリックされたときのイベントプロシージャを記述しています。

Option Explicit

Private Sub UserForm_Initialize()
    CommandButton1.Caption = "Open"
    CommandButton1.Accelerator = "o"
End Sub

Private Sub CommandButton1_Click()
    MsgBox "Open"
End Sub

コマンドボタンにアクセスキーを設定する(Accelerator)(1)

コマンドボタンにアクセスキーを設定する(Accelerator)(2)

ユーザーフォームを表示し、表示されたコマンドボタンを確認すると、コマンドボタンに表示されている文字列の中でアクセスキーに設定した "o" の文字に下線が表示されていることが確認できます。

コマンドボタンにアクセスキーを設定する(Accelerator)(3)

また Alt + o キーを押すと、コマンドボタンが実行されてメッセージボックスが表示されます。

コマンドボタンにアクセスキーを設定する(Accelerator)(4)

コマンドボタンのイベント一覧

コマンドボタンで発生するイベント一覧は次の通りです。

BeforeDragOver
BeforeDropOrPaste
Click
DblClick
Enter
Error
Exit
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp

コマンドボタンの既定のイベントは Click イベントです。

-- --

Excel のユーザーフォームで設置できるコマンドボタンを VBA から使用する方法と、コマンドボタンで設定可能なプロパティおよびイベントの一覧について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。