【VBA】ユーザーフォームのコマンドボタンをクリックしてマクロを実行する方法

目次

はじめに

VBAのユーザーフォームは、ツールにグラフィカルな操作画面を提供する上で欠かせない要素です。そして、その中心となるのが、ユーザーがクリックして処理を指示するための「コマンドボタン」です。

「このボタンを押したら、シートに今日の日付を入力する」といったように、ボタンのクリックという単純なアクションに、特定のVBAマクロを紐付けることができます。

この記事では、ユーザーフォームにコマンドボタンを配置し、そのボタンがクリックされたときに特定の処理を実行させるための、最も基本的で重要な手順を解説します。


ボタンでマクロを実行するVBAサンプルコード

ここでは、MainForm というユーザーフォームに配置した RunProcessButton という名前のボタンをクリックすると、選択したセルに「処理実行済み」というスタンプを押す処理を作成します。

ユーザーフォームのコード

このコードは、ユーザーフォームのコードモジュールに直接記述します。

  1. ユーザーフォームに「コマンドボタン」を配置します。
  2. ボタンのプロパティウィンドウで、(Name)RunProcessButton に、Caption処理を実行 に変更します。
  3. 配置した「処理を実行」ボタンをダブルクリックすると、VBEに Private Sub RunProcessButton_Click() というコードが自動的に生成されるので、その中に処理を記述します。
' 「処理を実行」ボタン(RunProcessButton)がクリックされたときに実行されるイベント
Private Sub RunProcessButton_Click()

    ' 選択範囲がセルであるかを確認
    If TypeName(Selection) <> "Range" Then
        MsgBox "セルを選択してから実行してください。", vbExclamation
        Exit Sub
    End If
    
    ' 選択されているセルの値と書式を変更
    With Selection
        .Value = "処理実行済み"
        .Font.Bold = True
        .Interior.Color = vbYellow
    End With

End Sub

ボタンのキャプションをコードで設定する

ボタンの Caption(表示されるテキスト)は、プロパティウィンドウだけでなく、VBAコードで動的に設定することも可能です。例えば、フォームが表示される直前の UserForm_Initialize イベントで設定できます。

' フォームが初期化されるときに実行されるイベント
Private Sub UserForm_Initialize()
    ' RunProcessButton の Caption プロパティを設定
    Me.RunProcessButton.Caption = "ここをクリックして実行"
End Sub

コードの解説

Private Sub RunProcessButton_Click()

これは特別な名前のイベントプロシージャで、RunProcessButton という名前のコントロールがクリックされたときに、SubEnd Sub の間に書かれたコードが自動的に実行されます。この _Click() イベントが、ボタン操作の基本となります。

Selection オブジェクト

Selection は、ユーザーが現在Excelシート上で選択しているセル範囲を指すオブジェクトです。Selection.Value = "..." とすることで、選択されたセルの値を書き換えることができます。

Me.RunProcessButton.Caption

  • Me: ユーザーフォームのコードモジュール内では、Me はそのフォーム自身を指します。MainForm.RunProcessButton.Caption と書くのと同じ意味ですが、Me を使うのが一般的です。
  • .Caption: コントロールの表面に表示されるテキストを制御するプロパティです。

まとめ

今回は、ユーザーフォームのコマンドボタンにマクロを紐付ける、最も基本的な方法を解説しました。

  • ボタンの処理は、Private Sub ボタン名_Click() というイベントプロシージャ内に記述する。
  • ボタンの表示テキストは .Caption プロパティで設定できる。

ユーザーフォームの操作は、この「ボタンをクリックして、対応する _Click() イベント内のコードを実行する」という流れが全ての基本です。この仕組みを理解すれば、様々な機能を持つインタラクティブなツールを作成できるようになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次