【VBA】コマンドボタン(マクロ実行ボタン)を作成する方法をご紹介
VBAで設定したコードの「実行ボタン」を作成したい!どうやればいいの?
こんな疑問にお答えします。
コマンドボタンの作成にはいろんな方法があるのですが、この記事では以下の3つの方法をご紹介します。
- 【超簡単】ツールバーからボタンを作成
- ユーザーフォームでボタンを作成
- セルに実行ボタンの機能を設定
おすすめは1つの目の「クイックアクセスツールバーからボタンを作成」する方法です。
VBA初心者の方でも30分もあれば作成可能という超簡単な方法なので是非チェックしてみてください。
目次
コマンドボタンの作成方法① ツールバーからボタンを挿入する
私的にコマンドボタンを作成する最も簡単な方法だと思っています。
VBA初心者の方でもすぐに実践することができる方法なので是非使い方をマスターしてください。さっそくコマンドボタン作成方法を図を使って解説していきます。
手順① 「開発」→「挿入」→ボタン(フォームコントロール)を選択
手順② コマンドボタンを設置したい適当な場所にカーソルを合わせてドラック
手順③ 「OK」を選択
VBAでコードを作成していれば「マクロの登録」というダイアログの中にコード名が表示されます。
サンプルとして、Module1に以下のようなコードを作成してみました。
すると、「マクロの登録」のダイアログにテストというコード名が表示されるようになります。
「テスト」はModule1に作成したコードのことです。プロシージャでVBAを増やしていくと「マクロの登録」のダイアログの一覧にコード名が表示されていきます。
コマンドボタンに登録したいコード名を選択すれば登録完了です。
コマンドボタンの作成方法①-1 クイックアクセスツールバーからボタンを挿入する
上記で紹介した「ツールバーからボタンを作成する方法」とほとんど同じなのですが、
クイックアクセスツールバーに「ボタン(フォームコントロール)」を登録しておくことでパッとコマンドボタンを作成できるようになります。
クイックアクセスツールバーへの登録方法をご紹介します。
手順① 「▼」をクリック→「その他のコマンド」→「すべてのコマンド」→「ボタン(フォームコントロール)」→「追加」→「OK」
手順② クイックアクセスツールバーに新たに表示された「ボタン(フォームコントロール)」をクリック→コマンドボタンを設置したい適当な場所にカーソルを合わせてドラック
「ボタン(フォームコントロール)」をトップ画面に登録することで、ボタンコマンドを探す手間を省くことができます。
コマンドボタンは毎日設定するようなものではないので、どこにあるのかよくド忘れしてしていました。。
クイックアクセスツールバーに登録してからこんな無駄な時間を使うことはなくなりました。
これから業務効率化マクロをいっぱい開発していくんだ!という方は是非クイックアクセスツールバーへの登録をおすすめします。
コマンドボタンの作成方法② ユーザーフォームでボタンを作成する方法
ユーザーフォームによるコマンドボタンの作成は、最も利用されているマクロの実行方法です。
最初は難しいと感じるかもしれませんが、やり方を覚えてしまえば感覚的に設定することができるようになるはずです。
是非ユーザーフォームによるコマンドボタンの作成に挑戦してみてください。
手順① 「Alt」+「F11」でVBAを開く → 左側のプロジェクトの部分で 右クリック → 「挿入」 → 「ユーザーフォーム」 を選択
手順② ツールボックスを使って実際に表示させるフォームを設定する。
もし上記のツールボックスが表示されていない方は、ツールバーにあるツールボックスを選択すると表示させることができます。
手順③ ツールボックスの「コマンドボタン」を選択し、画面右側(UserForm1)に登録する。
手順④ コマンドボタンを選択中に下記のアイコンをクリックする。
手順⑤ 「Private sub CommandButton1_Click()」の下に実行させたいコードを記入する
今回はサンプルコードとして、ユーザーフォームによる設定」というテキストをA1セルに入力するコードを記載
手順⑥ ユーザーフォームを表示させたいシートを選択し、ユーザーフォームを表示させるコードを記載する。UserForm1.Show vbModeless」を
ユーザーフォームを表示させるコード
Private Sub WorkSheet_Activate ()
UserForm1.Show vbModeless
End Sub
このコードはユーザーフォームを設定するときに必ず使用することになるので絶対に覚えておきましょう。
内容としてはSheet「ユーザーフォーム」を選択したとき、UserForm1(先ほど作成したユーザーフォーム)を表示させる。というプログラムです。
これでユーザーフォームを使ったコマンドボタンの設定は完了です。
コマンドボタンの動作を試してみた結果がこちら
コマンドボタンの作成方法③ セルにコマンドボタンの機能を設定する方法
「セルにコマンドボタンの機能を設定する」とは、セルのクリックでマクロを実行させることです。
- セルをクリックすると色が変わる
- セルをクリックすると集計マクロが実行される
- セルをクリックすると転記マクロが実行される
ボタンを押下する手間を省くことができるので、エクセル操作の一環でマクロを使用するこが可能になります。
セルのクリックでマクロを実行する方法を解説していきます。
手順① 「Alt」+「F11」でVBAを開く → Sheetを選択
手順② 「Worksheet」、「SelectionChange」を選択
手順③ 動作させたいコードを記入
上記で記入されているサンプルマクロがこちら
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If (Target.Column = 3) And (Target.Row = 3) Then
Target.Cells.Interior.Color = RGB(255, 255, 0)
Else
End If
If Err <> 0 Then
Err.Clear
End If
End Sub
試してみたいという方はサンプルコードをコピペして使ってみてください。
たったこれだけで、セルのクリックでマクロを実行させる設定が完了です。
セルの指定方法に引数Targetを使用しなければならないので、
ちょっと難しく感じるかもしれませんが慣れてしまえばいろんなコードを設定できるようになります。
下記の記事では、引数Targetの使い方を詳しくご紹介しています。
コピペして使えるサンプルコードも多数掲載されているので是非参考にしてみてください。
コマンドボタンの設定は業務内容に合わせて変更しなければならない
作成したマクロを実行させるためのコマンドボタンは業務内容に合ったものを設定しなければなりません。
「ツールバーから作成するコマンドボタンが一番簡単で手っ取り早い!これ1本じゃダメなの?」
基本的にツールバーから作成するコマンドボタンでいいと私も思いますが、この方法が使えない場面が出てくると思います。
私が勤めていた会社で実際にあった事例を参考に、なぜ業務内容に合わせてコマンドボタンの設定方法を変えなければならないのかをご紹介していきます。
事例① コマンドボタンが邪魔になったのに編集できない
会社では自分一人が操作するエクセル以外に職場にいる全員が編集するエクセルがありますよね。
この、職場にいる全員が編集するエクセルにコマンドボタンを設定したときに「ボタンを配置したセルを編集したいのに動かせない」というクレームが入ってしまいました。
ユーザーフォームでコマンドボタンを設定していればこのような事態にはならなかったと反省しています。
事例② ユーザーフォームを×で消しちゃった!どうすればいいの?
ユーザーフォームを表示させる仕組みをしっかり設定していなければ、ユーザーフォーム自体を閉じられてしまいマクロが実行できなくなるという事象が発生してしまいます。
このときは、Sheetを切り替えるとユーザーフォームが表示される仕組みを採用していたのでシートを切り替えれば再度フォームが表示されるのでしたが閉じてしまった方はわからなかったようです。
ユーザーフォームは邪魔くさい、扱いづらいと感じる方が少ないので、この場合ユーザーフォームではないコマンドボタンの設定方法が必要になります。
事例③ 行や列の挿入でマクロの実行ができなくなった
「実行」というテキストを記入したセルに実行コードを設定していたのですが、列や行の挿入に対応させていませんでした。
昔から様式が決められているエクセルファイルだったので、私は行や列の変更はないと決めつけて特定セルに実行コードを設定してしまいました。
この場合、ユーザーフォームによるコマンドボタンの設定を行っていれば問題は発生しなかったでしょう。
実際に私の職場で発生した事例を3つ紹介させていただきました。
マクロを実行する仕組み作りは最新の注意を払う必要があります。せっかく苦労して作成したマクロも実行されなければ全く意味がありません。
この記事で紹介したコマンドボタンを設定する3つの方法をマスターしておけば、どんな業務内容であっても最適な実行ボタンを設定することができるようになります。
是非参考にしてみてください。
ディスカッション
コメント一覧
まだ、コメントがありません