- Home ›
- Excel VBA入門 ›
- 入力フォームの作成
コマンドボタンの利用
フォーム上で何か処理を行うためのトリガーとなるコマンドボタンの利用方法について解説します。
(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)
目次
コマンドボタンを作成する
コマンドボタンを作成する方法を見ていきます。コマンドボタンを作成するにはツールボックス上で下記のアイコンをクリックします。
アイコンをクリックした後でフォーム上でマウスをドラッグしてコマンドボタンを作成します。
オブジェクト名の設定
VBAから操作するにあたってコマンドボタンのオブジェクト名を設定しておきます。コマンドボタンのプロパティウィンドウを見てください。
オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「actButton」に変更します。
コマンドボタンに表示する文字列を設定する
コマンドボタンに表示する文字列を設定します。コマンドボタンに文字列を設定するには「Caption」プロパティを使います。
object.Caption = String
オブジェクトの上に表示するオブジェクト名または説明テキストを設定します。 object には設定するオブジェクトを指定します。設定する値の String にはキャプションとして表示されるテキストを示す文字列式を指定します。
コマンドボタンに表示したい文字列をCaptionプロパティに設定します。
実際の使い方としては次のようになります。
sampleForm.actButton.Caption = "ボタン"
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.actButton.Caption = "ボタン" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
指定した文字列がボタンに表示されます。
プロパティウィンドウで値を指定する
「Caption」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所の直接値を入力して下さい。
コマンドボタンがフォーカスを取得できないように設定する
コマンドボタンがフォーカスを取得できないように設定します。フォーカスを取得できないように設定するには「Enabled」プロパティを使います。
object.Enabled = Boolean
コントロールがフォーカスを取得できるかどうか、およびユーザーの操作で発生したイベントに応答するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean にはユーザーの操作で発生したイベントに応答するかどうかを指定します。
「True」を設定するとフォーカスを取得でき、ユーザーの操作で発生したイベントに応答できます。デフォルトの値は「True」です。「False」を設定するとマウス操作やキー操作でコントロールを操作することはできません。ただし、コードを通じて操作することは可能です。
実際の使い方としては次のようになります。
sampleForm.actButton.Enabled = False
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.actButton.Enabled = False sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
ボタンに表示されている文字列が淡色表示されボタンはフォーカスを取得出来ない状態になります。
プロパティウィンドウで値を指定する
「Enabled」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Enabled」の箇所の右側にある下矢印をクリックして値を選択して下さい。
コマンドボタンの文字色と背景色を設定する
コマンドボタンの文字色と背景色を設定します。文字色の設定には「ForeColor」プロパティを使います。
object.ForeColor = Long
オブジェクトの前景色を設定します。 object には対象となるオブジェクトを指定します。設定する値の Long にはオブジェクトの前景色を表す値または定数を指定します。
色を指定するためのLong型の値には数値の変わりにRGB関数を使って色を指定できます。(RGB関数については「RGB関数」を参照して下さい。
実際の使い方としては次のようになります。
sampleForm.actButton.ForeColor = RGB(255, 0, 0)
次は背景色の設定です。背景色の設定には「BackColor」プロパティを使います。
object.BackColor = Long
オブジェクトの背景色を設定します。 object には対象となるオブジェクトを指定します。設定する値の Long にはオブジェクトの背景色を表す値または定数を指定します。
基本的に使い方は前景色の場合と同じです。ただ背景色の場合は背景が非透明になっている必要があります。デフォルトで非透明になっているので特に設定は必要ありませんが明示的に指定する場合には「BackStyle」プロパティを設定します。
object.BackStyle = fmBackStyle
オブジェクトの背景のスタイルを設定します。 object には対象となるオブジェクトを指定します。設定する値の fmBackStyle にはコントロールの背景スタイルを指定します。
指定できる値は次のどちらかです。
定数 | 値 | 背景スタイル |
---|---|---|
fmBackStyleTransparent | 0 | 背景を透明にします |
fmBackStyleOpaque | 1 | 背景を不透明にします |
使い方としては次のようになります。
sampleForm.actButton.BackColor = RGB(255, 0, 0) sampleForm.actButton.BackStyle = fmBackStyleOpaque
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.actButton.ForeColor = RGB(255, 0, 0) sampleForm.actButton.BackColor = RGB(255, 255, 0) sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
このように文字の色と背景色を設定できます。
プロパティウィンドウで値を指定する
「ForeColor」プロパティと「BackColor」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。では例として文字色の設定を行います。プロパティウィンドウの「ForeColor」の箇所の右側にある下矢印をクリックします。
カラーパレットが表示されますので設定したい色を選択します。
コマンドボタンにアクセスキーを設定する
コマンドボタンにアクセスキーを設定しキー入力でコマンドボタンを実行できるように設定します。アクセスキーの設定には「Accelerator」プロパティを使います。
object.Accelerator = String
コントロールのアクセスキーを設定します。値の取得も可能です。 object には対象となるオブジェクトを指定します。設定する値の String にはアクセスキーとして使う文字を指定します。
アクセスキーとして設定した文字は、ボタンの「Caption」プロパティで設定されたボタンに表示される文字の中で同じ文字の部分に下線が表示されます。
実際の使い方としては次のようになります。
sampleForm.actButton.Accelerator = "e"
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Load sampleForm sampleForm.actButton.Caption = "ボタン(e)" sampleForm.actButton.Accelerator = "e" sampleForm.Show End Sub
上記マクロを実行すると次のように表示されます。
ボタンに表示されている文字の中でアクセスキーに設定した文字に下線が引かれていることを確認して下さい。
プロパティウィンドウで値を指定する
「Caption」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所に直接入力して下さい。
コマンドボタンのイベント処理
コマンドボタンで用意されているイベントは以下の通りです。
イベント | 発生条件 |
---|---|
Click | マウスでクリック |
DblClick | マウスで2 回クリック |
Enter | 別のコントロールからフォーカスを受け取る前 |
Exit | 別のコントロールにフォーカスを移す直前 |
MouseDown | マウスボタンを押す |
MouseUp | マウスボタンを離す |
MouseMove | マウスボタンを動かす |
Error | コントロールでエラーが検出され、呼び出し元のプログラムにエラー情報を返せないとき |
BeforeDragOver | ドラッグ アンド ドロップ操作の実行 |
BeforeDropOrPaste | データをオブジェクトにドロップしようとするか、または貼り付けようとする |
例としてClickイベントを試してみます。
フォームのコードウィンドウを開いて次のように入力します。
Private Sub actButton_Click() Range("B6").Value = nameText.Text Unload sampleForm End Sub
Excelシート上に配置したマクロ実行用のボタンをクリックするとフォームが表示されます。そしてフォーム上のボタンをクリックすると、フォーム内のテキストボックスに入力した値をExcelのシートに表示します。
シート上のボタンから呼び出されるマクロは次の通りです。
Sub テスト() Load sampleForm sampleForm.actButton.Caption = "シートへ" sampleForm.Show End Sub
ではまずExcelのシートを表示します。
ボタンをクリックするとマクロが呼び出されてフォームが表示されます。
フォーム上のテキストボックスに文字を入力します。
フォーム上の「シートへ」と書かれたボタンをクリックします。するとフォームは閉じられ、テキストボックスに入力された値がExcelのシート上に表示されます。
-- --
フォーム上で何か処理を行うためのトリガーとなるコマンドボタンの利用方法について解説しました。
( Written by Tatsuo Ikura )

著者 / TATSUO IKURA
初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を行っています。