VBAの引数Targetの使い方【クリックでVBAの実行が可能】
セルをクリックしてマクロを実行させたい
こんな要望にお応えします。
どうすればいいのかと言うと、引数Targetを使ってVBAを作る!です。
引数Targetを扱えるようになるとこんなことが可能になります。
- セルのクリックで作ったマクロを実行させる
- セルのクリックでドロップダウンリストを表示させる
- セルのクリックで背景色を変化させる

ひらめく人
VBAの実行でよく使われるのが、「ユーザーフォームによる実行」や「ボタン」です。
ですが、
業務内容によって、「ユーザーフォームによる実行」や「ボタン」が邪魔くさい!と感じることがあります。
セルのクリックでマクロを実行できるようになると、シンプルでかっこいいエクセルにすることができます。
マクロの実行方法で悩んでいる方は是非参考にしてみてください。
目次
【VBA】引数Targetでできることとは?
先ほども紹介しましたが引数Targetを導入することで「セルをクリックすると〇〇できる」ということが大きな特徴です。
具体的にどのような処理が可能になるのか、サンプル事例を使ってご紹介していきます。
C列のセルをクリックすると背景色が緑色になる
引数字TargetとCloumn(列の指定)を組み合わせることで、指定する列のセルをクリックするとマクロを実行させることが可能になります。
C列のセルをクリックすると背景色を緑に変化させるマクロがこちら
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Column = 3 Then
Target.Cells.Interior.Color = RGB(0, 255, 0)
Else
End If
If Err <> 0 Then
Err.Clear
End If
End Sub
実行結果がこちら
セルをクリックして背景色を変化させるマクロは「チェック表」に導入すると使い勝手がよくかなり便利です。
3行目のセルをクリックすると背景色が赤色になる
引数字TargetとRow(行の指定)を組み合わせることで、指定する行のセルをクリックするとマクロを実行させることが可能になります。
3行目のセルをクリックすると背景色を赤に変化させるマクロがこちら
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Row = 3 Then
Target.Cells.Interior.Color = RGB(255, 0, 0)
Else
End If
If Err <> 0 Then
Err.Clear
End If
End Sub
実行結果がこちら
C3セルをクリックすると背景色が黄色になる
引数字TargetとRow(行の指定)、Cloumn(列の指定)を組み合わせることで、指定するセルをクリックするとマクロを実行させることが可能になります。
C3セルをクリックすると背景色を黄色に変化させるマクロがこちら
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を応用させたマクロを数多く導入しています。
・色を変化させ、チェック作業に応用
・内容が変化するプルダウンリストを作成
・注意喚起ボタンを使って忘れ防止VBAの作成
エクセルを使った業務がある!という方には絶対に役立つマクロなので是非使い方をマスターしてみてください。
【VBA】引数Targetとは
WorkSheet_Changeイベントの引数Targetは、セルの範囲を指定したり、セルをクリックしたときにVBAを実行する処理を行うときに使われます。
下記の動画では引数Targetの使い方を紹介しています。
引数Targetの使い方の特徴として、WorkSheet_Changeイベントはプロシージャではなく、Sheetに作成する!ということです。
標準モジュールで引数ターゲットを使おうとしてもうまくいきません。
引数ターゲットはSheetにVBAをつくる!ということを覚えておいてください。
使い方としては、
Target.Row=〇〇 または Target.column=△△、もしくは Target.Row=〇〇 And Target.column=△△
と記載します。
〇〇行目、△△列目という意味です。
この基本的な使い方さえ覚えておけばいろんなマクロに応用させることができます。
【VBA】引数Targetの使い方
引数Targetを実務に導入するためのおすすめの使い方をご紹介します。
エクセル作業の効率アップに繋がるヒントが見つかると思いますので是非チェックしてみてください。
引数Targetと関数Ifの組み合わせ
引数Targetは関数IFと組み合わせることで、とても便利に使うことができます。
サンプル事例内容がこちら
セルをクリックするとセル内のテキストがどんどん変化する
「空欄」→「〇」→「×」→「△」→「空欄」のような変化をするサンプルVBAを紹介します。
サンプルVBA
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
If Target.Value = "" Then
Target.Value = "〇"
ElseIf Target.Value = "〇" Then
Target.Value = "×"
ElseIf Target.Value = "×" Then
Target.Value = "△"
ElseIf Target.Value = "△" Then
Target.Cells.ClearContents
Else
End If
If Err <> 0 Then
Err.Clear
End If
End Sub
実行結果
セルをクリックするだけでテキストをどんどん変化させることができます。
職場ではチェック欄にこのマクロを設定し、「クリックするだけでチェック作業ができる」仕組みを導入。

ひらめく人
引数Targetとプルダウンリストの組み合わせ
VBAでプルダウンリストを設定したいときには必ず引数Targetが必要になります。
サンプル事例内容がこちら
セルをクリックするとプルダウンリストが表示される
サンプルVBA
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Cells.Validation.Delete
With Target.Validation
.Add Type:=xlValidateList, Formula1:="〇,×"
.ShowError = False
End With
If Err <> 0 Then
Err.Clear
End If
End Sub
実行結果
セルをクリックすると、VBA内に直接入力した「〇」と「×」がリスト表示されます。
「データの入力規則」や「名前の定義」を設定する必要がないので、プルダウンリストの設定が壊される心配がありません。
上記サンプルVBAは「〇」と「×」だけを表示させるとてもシンプルなものですが、
別シートの一覧表からプルダウンリストの内容を取得して表示させる!ということも可能です。
あらかじめ「設定」シートを作成しておき、「氏名」や「住所」「連絡先」の情報一覧を作成しておきます。
そうすれば一覧表を常にリスト化することができリスト項目の編集も「設定」シートを編集するだけ。

正解の人
別シートの一覧表からプルダウンリストの内容を取得は下記の記事で詳しく紹介しています。
この方法は実務でめちゃくちゃ使えるマクロなので気になる方は是非導入してもらいたいと思います。
【VBA】引数Targetを使ったVBAの注意事項
引数Targetはとても便利なVBAですが、導入には注意が必要です。
注意ポイントとしては、
行や列の挿入・削除をされると指定していたセルがズレてしまう恐れがある。
ということです。
どういうことかというと、イメージとしてはこんな感じ
仕事をしていると「一覧表の様式変更」は仕方のないことです。
- 行や列を変化させない工夫
- 様式変更に対応できるマクロ作り
- 様式変更の影響を受けない計画
引数Targetを使う場合、上記のようなことを頭にいれながら作業を進めてみてください。
多くの方が扱うエクセルファイルに引数Targetを導入するときはいろんなことを想定しましょう。
【VBA】引数Targetを使った事例
「引数TargetはセルをクリックしてVBAを実行させるもの」とお判りいただけたかと思います。
次に「実際の仕事」や「プライベートで使っている家計簿」に導入した引数Targetの動き
をご紹介していきます。
え!?こんなことできるの??
と思うような結果になっていますので是非チェックしてみてください。
プルダウンリストの内容が変化するエクセル家計簿
セルをクリックすると「設定」シートに作成した一覧表の情報をプルダウンリストに表示させる仕組みを導入しました。
単純に一覧表の情報をリスト化するのではなく、クリックしたセルの左のセルの情報でリスト内容が変化するという仕組みを追加設定しています。
どういうことかというと、イメージはこんな感じ
常に最小限のリスト項目が表示されるので入力作業がとても簡単。
項目で「日用品」を選択しているのに、細目で全く関係のない「野菜」や「魚」「肉」がリストに表示されては邪魔でしょうがないですよね。
この仕組みを仕事に応用すれば間違いなく作業効率をアップさせることができます。
このエクセル家計簿には他にも、グラフを作成するマクロ、自動集計するマクロなど家計簿に最適なマクロがいくつも設定されています。
マクロが設定されたエクセル家計簿を使ってみたい!という方は下記のサイトからダウンロードすることが可能です。
是非参考にしてみてください。
ユーザーフォームが表示されるエクセルカレンダー
セルをクリックすると「年数切替を行うユーザーフォーム」を表示させる仕組みを導入しました。
エクセルカレンダーにおいて年数切替は年に数回しか行わない処理です。
そのため、常に「年数切替用のユーザーフォーム」が常に表示されていては邪魔で仕方ない。
しかし、年数を切り替えたいとき速やかに処理を実行したい。
こんな思いから導入したのが、「セルをクリックするとユーザーフォームが表示される」という仕組みです。
イメージとしてはこんな感じ
エクセルカレンダーには他にも以下のようなマクロが設定されています。
- 年数と日付から曜日を自動調整するマクロ
- 年間カレンダーと月間カレンダーの内容を同期するマクロ
- スクロールを省略できるハイパーリンクマクロ
エクセルカレンダーは何年も使い続けることができ、スケジュール調整や確認を簡単に行うことができるので仕事への導入がおすすめです。
エクセルカレンダーについては下記のサイトで詳細・ダウンロードが可能です。気になる方は各サイトをチェックしてみてください。
マクロが設定されたエクセルカレンダーを使ってみたい!という方は下記のサイトからダウンロードすることが可能です。
VBAの導入は「エクセル作業の効率アップ」に必須事項
引数Targetのように、VBAには仕事の効率をアップさせることができる機能がいろいろあります。
- こんな処理を自動化したい
- ルーティーン作業から脱却したい
- エクセル残業をやめたい
このように考える方はVBAの勉強をスタートさせましょう。
私は仕事をしながらオンライン学習サービス【1st Step】とVBAの参考書を利用してVBAスキルを身に付けました。
VBAを勉強していたときに感じていたことが、
基本さえ身に付ければすぐに仕事に活かすことができる
ということです。
VBAスキルを身に着けることで、今まで何時間もかかかっていた作業をほんの数分で処理することができるようになります。
下記の記事では実際に私が利用したオンライン学習サービス【1st Step】とVBAの参考書について詳しくご紹介しています。
併せて確認してみてください。
VBAスキルを身に付けてエクセル作業の効率化を自ら導入してみてはいかがでしょうか。
ディスカッション
コメント一覧
まだ、コメントがありません