事務業務をしていると、同じ作業の繰り返しが山ほどありますよね。
実は、そうした「手作業の負担」は、Excel内に配置した「ボタン」をワンクリックするだけで、一瞬にして解消することができます。
今回は、VBA(プログラミング)の入り口として「CommandButton(コマンドボタン)」のクリックイベントについて解説します。
クリックイベントとは?
「クリックイベント」という言葉は難しく聞こえるかもしれませんが、要するに「ボタンが押された際、あらかじめ指定した動作を実行する」という仕組みのことになります。
身近な例で例えるなら、「電気のスイッチ」と同じ構造になります。
- スイッチを押す(クリックする)
- 電気がつく(あらかじめ決められた動作)
このように考えると、非常にシンプルに捉えられるかと思います。
実際にボタンを作ってみよう
今回は実践として、入力されたデータをボタン一つで一括消去する「クリアボタン」を作成してみます。
【手順】
- Excelの「開発」タブから「挿入」をクリックし、ActiveXコントロール内にある「コマンドボタン」を選択します。
- ワークシート上の任意の場所でドラッグすることで、ボタンが配置されます。
- 配置したボタンをダブルクリックします。
すると、VBAのエディタ(VBE)が起動し、以下のようなコードが自動的に生成されます。

Private Sub CommandButton1_Click()
' ここに「やりたいこと」を書きます
End Sub
これが「クリックイベント」の仕組みになります。この「Sub」から「End Sub」の間に記述した命令が、ボタンをクリックした瞬間に実行される形になります。
コードの最初にあるPrivateという文字を見て、「これは何だろう?」と感じた方もいらっしゃるかもしれません 。
これは専門用語で「アクセス修飾子」と呼ばれるもので、簡単に言うと「このプログラムが動く範囲(有効範囲)」を決める言葉です。
Privateと書かれている場合、そのプログラムは「ボタンを配置したそのシート内だけでしか使えません」という意味になります 。
もし他のシートや別のファイルからも自由に呼び出せるようにしたい場合はPublic(パブリック)という言葉を使いますが、今回のようにシートに置いたボタンを動かすだけであれば、自動で付くPrivateのままで全く問題ありません 。
最初は「このボタン専用のプログラムという意味なんだな」と、テンプレように気楽に捉えておけば大丈夫です 。
コピペで使える!実践コード
それでは、実際のコードを記述してみましょう。以下のプログラムは、セルB2からB10の内容を一瞬で消去し、処理の完了をメッセージで通知する便利なコードになります。
Private Sub CommandButton1_Click()
' --- 指定した範囲の内容をクリアする命令 ---
' Range("B2:B10") は「B2からB10までのセル」という意味です
Range("B2:B10").ClearContents
' --- 終わったことをメッセージで知らせる ---
MsgBox "データの削除が完了しました!"
End Sub
ここでつまずく!「デザインモード」の罠
ここで、VBA初心者の方が特につまずきやすいポイントを紹介します。
「ボタンを押してもマクロが動かず、ボタン自体が選択されてしまう」という場合は、Excel上部にある「デザインモード」がオンになっていないか確認してみてください。
- デザインモードON: ボタンの場所や名前を変える「編集モード」
- デザインモードOFF: ボタンを押してプログラムを動かす「本番モード」
このモードを切り替えるだけで、意図通りにボタンが機能するようになります。
日々の小さな業務効率化の積み重ねが、大きなゆとりを生み出すことにつながります。。ぜひ活用してみてください!
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

コメント