Excel VBAでフォームコントロールのボタンにマクロを登録する方法

Excel VBA

Excel VBAでフォームコントロールのボタンにマクロを登録する方法

ExcelでVBAマクロを作っても、

毎回VBAエディタを開いて実行するのは面倒です。

よく使う処理であれば、

シート上にボタンを配置して、

そのボタンからマクロを実行できるようにしておくと便利です。

Excelでマクロ実行ボタンを作る方法はいくつかありますが、

初心者や実務配布用であれば、

まずは

フォームコントロールのボタン

を使うのが分かりやすいです。


結論:単純な実行ボタンならフォームコントロールで十分

Excelで単純なマクロ実行ボタンを作るなら、

フォームコントロールのボタンで十分です。

基本的な流れは、

  1. 標準モジュールにSubを書く
  2. 開発タブからフォームコントロールのボタンを配置する
  3. ボタンに実行したいマクロを登録する
  4. ボタン名を分かりやすく変更する

という流れです。

ActiveXのようにイベントコードを書く方式ではなく、

「ボタンにマクロを登録する」

という仕組みなので、

初心者にも分かりやすいです。


フォームコントロールのボタンとは

フォームコントロールのボタンは、

Excelに標準で用意されているボタン部品です。

シート上に配置して、

指定したVBAマクロを実行できます。

特徴は、

  • シンプル
  • マクロ登録が分かりやすい
  • 他人のExcel環境でも比較的動きやすい
  • 実務用Excelツールのメニュー画面に使いやすい

という点です。

ActiveXより機能は少ないですが、

「押したらマクロを実行する」

という用途なら十分です。


フォームコントロールのボタンを追加する手順

フォームコントロールのボタンを追加するには、

まずExcelの「開発」タブを使います。

開発タブが表示されていない場合は、

Excelのオプションから表示できます。

手順は次の通りです。

  1. Excelで「開発」タブを表示する
  2. 「開発」タブの「挿入」をクリックする
  3. 「フォームコントロール」の中から「ボタン」を選ぶ
  4. シート上でドラッグしてボタンを配置する
  5. 表示される「マクロの登録」画面で実行したいSubを選ぶ
  6. ボタンの文字を分かりやすく変更する

これで、

ボタンをクリックすると登録したマクロが実行されます。


コピペで試せる確認用マクロ

次のコードは、

フォームコントロールのボタンに登録して試せる確認用マクロです。

このコードは、

標準モジュールに貼り付けてください。

ご注意

以下のVBAコードは、動作イメージを確認するためのサンプルです。
実行前に必ずExcelファイルのバックアップを作成してください。
業務で使用しているファイルに、いきなり貼り付けて実行しないでください。
Excelのバージョンや設定により、動作が異なる場合があります。

Sub FormButtonTest()

    Range("A1").Value = "フォームコントロールのボタンから実行しました: " & Format(Now, "yyyy/mm/dd hh:nn:ss")
    MsgBox "フォームコントロールのボタンからマクロを実行しました。", vbInformation

End Sub

このコードでは、

A1セルに実行日時を書き込み、

メッセージを表示します。

ファイル削除、

上書き保存、

外部通信などは行いません。

フォームコントロールのボタンにこのマクロを登録すれば、

ボタンから実行できるか確認できます。


マクロ登録時によくあるミス

フォームコントロールのボタンにマクロを登録するとき、

よくあるミスがあります。

Private Subにしていて一覧に出ない

フォームコントロールへ登録するマクロは、

基本的に標準モジュールに

Sub マクロ名()

の形で書くと分かりやすいです。

Private Sub にしていると、

マクロ登録画面に出てこない場合があります。

引数付きのSubを書いている

フォームコントロールに登録するマクロは、

引数なしのSubにするのが基本です。

例えば、

Sub Sample(ByVal name As String)

のような形だと、

そのままボタンに登録する用途には向きません。

標準モジュールではなくシートモジュールに書いている

ActiveXボタンの場合は、

シートモジュールにクリックイベントを書きます。

しかしフォームコントロールの場合は、

標準モジュールにSubを書いて、

ボタンに登録する方が分かりやすいです。

xlsx形式で保存している

マクロを使う場合は、

通常 .xlsm 形式で保存します。

.xlsx 形式で保存すると、

VBAコードは保存されません。

マクロが無効化されている

セキュリティ設定により、

マクロが無効化されている場合があります。

その場合、

ボタンを押しても処理は実行されません。

信頼できるファイルか確認した上で、

マクロを有効化してください。


標準モジュールに書くのが基本

フォームコントロールのボタンに登録するマクロは、

標準モジュールに書くのが基本です。

VBAエディタで、

「挿入」→「標準モジュール」

を選び、

そこにSubを書きます。

例えば、

Sub RunMain()

    MsgBox "処理を実行しました。"

End Sub

のような形です。

このSubをフォームコントロールのボタンに登録します。

ActiveXの

CommandButton1_Click

とは仕組みが違います。

フォームコントロールは、

イベントコードではなく、

登録したマクロを呼び出す方式です。


フォームコントロールとActiveXの違い

フォームコントロールとActiveXは、

どちらもExcel上にボタンを作れます。

ただし、

仕組みが違います。

フォームコントロールは、

ボタンにマクロを登録する方式

です。

ActiveXは、

ボタンのイベントコードで動かす方式

です。

単純に

「押したらマクロを実行する」

だけなら、

フォームコントロールの方が説明しやすいです。

一方で、

複雑なUI制御やイベント処理をしたい場合は、

ActiveXが候補になることもあります。

ただし実務配布では、

フォームコントロールの方が無難な場面が多いです。


実務配布ではフォームコントロールが向いている場面

次のような場合は、

フォームコントロールが向いています。

  • 実行ボタンだけ作りたい
  • 社内で使う簡単なExcelツールを作りたい
  • マクロに詳しくない人にも使ってもらう
  • Excelバージョンが混在している
  • トラブル時に説明しやすい構成にしたい
  • 押すだけのメニュー画面を作りたい

実務用Excelでは、

高機能であることよりも、

他人の環境でも動きやすいこと

が重要です。

その意味で、

フォームコントロールはかなり使いやすい選択肢です。


図形ボタンでもよい場面

フォームコントロール以外に、

図形へマクロを登録する方法もあります。

図形ボタンは、

  • 見た目を自由に作りたい
  • メニュー画面を少しきれいにしたい
  • 大きなボタン風にしたい
  • 単純にマクロを実行できればよい

という場合に便利です。

ただし、

標準的なボタン部品としては、

フォームコントロールの方が分かりやすいです。

見た目を優先するなら図形ボタン。

分かりやすさや標準感を優先するならフォームコントロール。

このように使い分けるとよいです。


まとめ

Excel VBAでマクロ実行ボタンを作るなら、

フォームコントロールのボタンは扱いやすい方法です。

基本は、

  1. 標準モジュールにSubを書く
  2. 開発タブからフォームコントロールのボタンを配置する
  3. ボタンにマクロを登録する

という流れです。

単純な業務用Excelツールなら、

フォームコントロールで十分な場面が多いです。

ActiveXは高機能ですが、

実務配布では環境差やトラブルの原因になることがあります。

迷ったら、

まずフォームコントロールから始めるのが無難です。


関連記事

  • Excel VBAのボタンはフォームコントロールとActiveXどっちがいいのか
  • Excelマクロボタンは図形・フォームコントロール・ActiveXのどれがいいのか
  • Excel VBAでActiveXボタンが動かない・反応しない原因と対処法

維持DXノートについて

維持DXノートでは、

建設コンサル実務で使うExcel/VBAや、

橋梁点検調書作成支援ツールの開発メモを公開しています。

Excel作業の自動化や、

帳票作成の手間を減らす考え方を、

実務目線で整理しています。


関連する無料Excelツール

維持DXでは、

橋梁点検・維持管理業務向けのExcel VBAツールを無料公開しています。

  • 橋梁点検調書の作成支援ツール
  • 評価結果一覧作成ツール
  • 旧様式から2024様式への移行支援ツール
  • 成果整合確認ツール

いずれも、

実務で発生しやすい

  • 転記作業
  • 写真貼付
  • 一覧作成
  • 旧成果移行
  • 整合確認

の負担を減らすための補助ツールです。

以下のフォームにメールアドレスを入力すると、

ダウンロードURLを自動返信メールでお送りします。

    お名前(任意)

    メールアドレス(必須)

    会社名・所属(任意)

    ご関心のある内容(任意)

    ご相談内容(任意)

    ご注意

    ダウンロードURLは、入力いただいたメールアドレス宛に自動返信で送信されます。

    ダウンロードしたExcelでマクロが実行できない場合は、

    右クリック → プロパティ →「許可する」 をチェック後、再度開いてください。

    (Windowsのセキュリティ機能により初回実行時にブロックされる場合があります)

    コメント