コマンドボタンの利用

フォーム上で何か処理を行うためのトリガーとなるコマンドボタンの利用方法について解説します。

(2022 年 06 月 16 日公開 / 2022 年 06 月 16 日更新)

コマンドボタンを作成する

コマンドボタンを作成する方法を見ていきます。コマンドボタンを作成するにはツールボックス上で下記のアイコンをクリックします。

コマンドボタンを作成する(1)

アイコンをクリックした後でフォーム上でマウスをドラッグしてコマンドボタンを作成します。

コマンドボタンを作成する(2)

コマンドボタンを作成する(3)

オブジェクト名の設定

VBAから操作するにあたってコマンドボタンのオブジェクト名を設定しておきます。コマンドボタンのプロパティウィンドウを見てください。

コマンドボタンを作成する(4)

オブジェクト名はプロパティウィンドウ上で直接編集が出来ます。今回はオブジェクト名を「actButton」に変更します。

コマンドボタンを作成する(5)

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

コマンドボタンに表示する文字列を設定します。コマンドボタンに文字列を設定するには「Caption」プロパティを使います。

object.Caption = String

オブジェクトの上に表示するオブジェクト名または説明テキストを設定します。 object には設定するオブジェクトを指定します。設定する値の String にはキャプションとして表示されるテキストを示す文字列式を指定します。

コマンドボタンに表示したい文字列をCaptionプロパティに設定します。

実際の使い方としては次のようになります。

sampleForm.actButton.Caption = "ボタン"

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.actButton.Caption = "ボタン"
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

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

指定した文字列がボタンに表示されます。

プロパティウィンドウで値を指定する

「Caption」プロパティについてはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所の直接値を入力して下さい。

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

コマンドボタンがフォーカスを取得できないように設定する

コマンドボタンがフォーカスを取得できないように設定します。フォーカスを取得できないように設定するには「Enabled」プロパティを使います。

object.Enabled = Boolean

コントロールがフォーカスを取得できるかどうか、およびユーザーの操作で発生したイベントに応答するかどうかを設定します。 object には設定するオブジェクトを指定します。設定する値の Boolean にはユーザーの操作で発生したイベントに応答するかどうかを指定します。

「True」を設定するとフォーカスを取得でき、ユーザーの操作で発生したイベントに応答できます。デフォルトの値は「True」です。「False」を設定するとマウス操作やキー操作でコントロールを操作することはできません。ただし、コードを通じて操作することは可能です。

実際の使い方としては次のようになります。

sampleForm.actButton.Enabled = False

サンプルプログラム

では簡単なサンプルで試してみましょう。

Sub テスト()
    Load sampleForm
    sampleForm.actButton.Enabled = False
    sampleForm.Show
End Sub

上記マクロを実行すると次のように表示されます。

コマンドボタンがフォーカスを取得できないように設定する(1)

ボタンに表示されている文字列が淡色表示されボタンはフォーカスを取得出来ない状態になります。

プロパティウィンドウで値を指定する

「Enabled」プロパティはプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Enabled」の箇所の右側にある下矢印をクリックして値を選択して下さい。

コマンドボタンがフォーカスを取得できないように設定する(2)

コマンドボタンの文字色と背景色を設定する

コマンドボタンの文字色と背景色を設定します。文字色の設定には「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 にはコントロールの背景スタイルを指定します。

指定できる値は次のどちらかです。

定数背景スタイル
fmBackStyleTransparent0背景を透明にします
fmBackStyleOpaque1背景を不透明にします

使い方としては次のようになります。

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

上記マクロを実行すると次のように表示されます。

コマンドボタンの文字色と背景色を設定する(1)

このように文字の色と背景色を設定できます。

プロパティウィンドウで値を指定する

「ForeColor」プロパティと「BackColor」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。では例として文字色の設定を行います。プロパティウィンドウの「ForeColor」の箇所の右側にある下矢印をクリックします。

コマンドボタンの文字色と背景色を設定する(2)

カラーパレットが表示されますので設定したい色を選択します。

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

コマンドボタンにアクセスキーを設定しキー入力でコマンドボタンを実行できるように設定します。アクセスキーの設定には「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

上記マクロを実行すると次のように表示されます。

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

ボタンに表示されている文字の中でアクセスキーに設定した文字に下線が引かれていることを確認して下さい。

プロパティウィンドウで値を指定する

「Caption」プロパティに関する設定はプロパティウィンドウで指定が出来ますので、値が決まっている場合は設計の時点で設定をしておくことも可能です。プロパティウィンドウの「Caption」の箇所に直接入力して下さい。

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

コマンドボタンのイベント処理

コマンドボタンで用意されているイベントは以下の通りです。

イベント発生条件
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のシートを表示します。

コマンドボタンのイベント処理(1)

ボタンをクリックするとマクロが呼び出されてフォームが表示されます。

コマンドボタンのイベント処理(2)

フォーム上のテキストボックスに文字を入力します。

コマンドボタンのイベント処理(3)

フォーム上の「シートへ」と書かれたボタンをクリックします。するとフォームは閉じられ、テキストボックスに入力された値がExcelのシート上に表示されます。

コマンドボタンのイベント処理(4)

-- --

フォーム上で何か処理を行うためのトリガーとなるコマンドボタンの利用方法について解説しました。

( Written by Tatsuo Ikura )

広告
Profile
profile_img

著者 / TATSUO IKURA

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