VBAの引数Targetの使い方【クリックでマクロを実行するテクニック】
VBAでいろんなマクロを設定していると、
セルをクリックして作成したマクロを実行させたい
と感じる方が多いのではないでしょうか。
こんな要望にお応えします。
どうすればいいのかと言うと、引数Targetを使ってVBAを作る!です。
引数Targetを使えば、
セルをクリックするだけで作成したマクロを実行できる
ようになります。
たとえば、こんな感じ
- セルのクリックで罫線を引く
- セルのクリックでドロップダウンリストを表示させる
- セルのクリックで背景色を変化させる
ボタンやユーザーフォームでマクロを実行するよりも、
シンプルでかっこいいエクセルファイルになること間違いなし!
この記事では、
引数Targetの基礎から応用まで、初心者にも分かりやすく解説。データ入力の自動化やレポート作成の効率化など、具体的な活用例も紹介
しています。
これを読めば、あなたのExcel作業が劇的に変わるかも?面倒な作業から解放されて、本当にやりたいことに集中できる未来が待っています。
引数Targetの使い方をマスターして、作業効率のアップを実現しませんか?
目次
【VBA】引数Targetでできることとは?
先ほども紹介しましたが引数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
実行結果がこちら
セルをクリックして背景色を変化させるVBAは
「チェック表」や「予定表」に導入すると使い勝手がよくかなり便利
です。
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に作成する!
がポイントです。
標準モジュールで引数ターゲットを使おうとしてもうまくいきません。

ガッツポーズの人
引数Targetでセルの場所を指定するコードの書き方がこちら
Target.Row=〇〇
Target.column=△△
Target.Row=〇〇 And Target.column=△△
Cells(Target.Row,Target.column)
「クリックした行が〇〇行、クリックした列が△△列目」
という意味です。
この基本的な使い方さえ覚えておけばいろんなマクロに応用させることができます。
【VBA】引数Targetの活用事例
引数Targetが使われた事例をいくつかご紹介します。
え!?こんなことできるの??
いろんなエクセル業務に応用できるかも??
と感じてくれるはずです。
エクセル作業の効率アップに繋がるヒントが見つかると思いますので是非チェックしてみてください。
引数Targetと関数Ifの組み合わせ
引数Targetは関数IFと組み合わせることで、あらゆるエクセル業務に応用させることができます。
サンプル内容がこちら
サンプル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や別シートの情報を取得するVBAなど
が詳しく解説されています。
ドロップダウンリストの項目が増えすぎて扱いづらい!!!
と困っている方は是非チェックしてみてください。
プルダウンリストの内容が変化するエクセル家計簿
エクセル家計簿に引数Targetを使ったプルダウンリストを設定することで編集作業がとても楽になります。
エクセル家計簿の使い方がこちら
セルをクリックすると、
「設定」シートに作成した一覧表の情報をプルダウンリストに表示させる
仕組みになっています。
さらに、
クリックしたセルの左のセルの情報でリスト内容が変化する
機能を追加。
どういうことかというと、イメージはこんな感じ
項目に「日用品」と入力すれば、関連する「ティッシュ」、「洗剤」しか表示されない。
続いて、
項目に「食費」と入力すれば、関連する「野菜」、「魚」しか表示されない。

ひらめく人
項目で「日用品」を選択しているのに、細目で全く関係のない「野菜」や「魚」「肉」がリストに表示されては邪魔でしょうがないですよね。
この仕組みを仕事に応用すれば間違いなく作業効率をアップさせることができます。
このエクセル家計簿には他にも数種類のマクロが設定されています。
- グラフを作成するマクロ
- 自動集計するマクロ
- 別シートの情報を転記するマクロ

ガッツポーズの人
関連サイト「マクロを設定したエクセル家計簿」では、
家計簿の記録に必要なマクロが全て設定されたエクセル家計簿をダウンロードしてすぐお使いいただけます。
家計簿として使ってもヨシ!
設定されているマクロをVBA学習用として使ってもヨシ!
部分的にマクロを抜き取って仕事用に使ってもヨシ!
いろんな活用方法があります。是非ゲットしてくださいね。
ユーザーフォームが表示されるエクセルカレンダー
エクセルカレンダーに引数Targetでユーザーフォームを表示するマクロを設定しました。
エクセルカレンダーの使い方がこちら
年数切替は年に数回しか行わない処理なので、「年数切替用のユーザーフォーム」は必要な時にだけ表示したい!という思いから
セルをクリックすると「年数切替を行うユーザーフォーム」を表示するマクロ
を導入しました。
イメージとしてはこんな感じ

ガッツポーズの人
エクセルカレンダーには他にも以下のようなマクロが設定されています。
- 年数と日付から曜日を自動調整するマクロ
- 年間カレンダーと月間カレンダーの内容を同期するマクロ
- スクロールを省略できるハイパーリンクマクロ
「こんな機能あれば便利だなぁー」と感じたマクロを全て導入しました。
関連記事「マクロを設定したエクセルカレンダー」では、
「年度切替マクロ」「年間カレンダーと月間カレンダー同期マクロ」などが設定されたエクセルカレンダーをダウンロードしてすぐお使いいただけます。
年度が変わっても同じエクセルでスケジュール調整を続けたい!
という方は絶対にゲットしてくださいね。
【VBA】引数Targetを使ったVBAの注意事項
引数Targetはとても便利なVBAですが、導入には注意が必要です。
注意ポイントとしては、
行や列の挿入・削除をされると指定していたセルがズレてしまう恐れがある。
ということです。
どういうことかというと、イメージとしてはこんな感じ
仕事をしていると「一覧表の様式変更」は仕方のないことです。
- 行や列を変化させない工夫
- 様式変更に対応できるマクロ作り
- 様式変更の影響を受けない計画
引数Targetを使う場合、上記のポイントを頭にいれながら作業を進めてみてください。
多くの方が扱うエクセルファイルに引数Targetを導入するときはいろんなことを想定しましょう。
いかがでしたでしょうか。
この記事を読んで、
VBAで日々のルーティーン作業を自動化したい!
と感じてくれた方はマメBlogのエクセルマクロ開発代行サービスの利用を検討してみてください。

ガッツポーズの人
「今やっている業務にも設定できるの?」「費用はどれくらいかかるの?」など、いろんな疑問があるかともいます。
ご相談、お見積りの依頼は無料ですのでお気軽にお問い合わせください。
ディスカッション
コメント一覧
まだ、コメントがありません