VBAの引数Targetの使い方【クリックでマクロを実行するテクニック】

VBAでいろんなマクロを設定していると、

セルをクリックして作成したマクロを実行させたい

と感じる方が多いのではないでしょうか。

 

こんな要望にお応えします。

 

どうすればいいのかと言うと、引数Targetを使ってVBAを作る!です。

 

引数Targetを使えば、

セルをクリックするだけで作成したマクロを実行できる

ようになります。

 

たとえば、こんな感じ

 

  • セルのクリックで罫線を引く
  • セルのクリックでドロップダウンリストを表示させる
  • セルのクリックで背景色を変化させる

ボタンやユーザーフォームでマクロを実行するよりも、

シンプルでかっこいいエクセルファイルになること間違いなし!

 

この記事では、

引数Targetの基礎から応用まで、初心者にも分かりやすく解説。データ入力の自動化やレポート作成の効率化など、具体的な活用例も紹介

しています。

 

これを読めば、あなたのExcel作業が劇的に変わるかも?面倒な作業から解放されて、本当にやりたいことに集中できる未来が待っています。

 

引数Targetの使い方をマスターして、作業効率のアップを実現しませんか?

 

広告

【VBA】引数Targetでできることとは?

先ほども紹介しましたが引数Targetを導入することで

「セルをクリックすることで作成したマクロを実行する」

ことができるようになります。

 

「クリックしたセルの背景色を変えたい」「クリックしたセルの右隣のセルを削除したい」のように、

セルをクリックすると〇〇したい!

こんなマクロを設定したいシーンって結構ありますよね。

 

Left Caption

ガッツポーズの人

引数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に作成する!

がポイントです。

 

 

標準モジュールで引数ターゲットを使おうとしてもうまくいきません。

 

Left Caption

ガッツポーズの人

引数TargetのVBAは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

 

実行結果

 

セルをクリックするだけでテキストをどんどん変化させることができました。

 

チェック欄にこのマクロを設定し、

クリックを繰り返すだけでどんどん作業を進める

ことが可能です。

 

Left Caption

ひらめく人

膨大な量のデータチェックを行うことがあるのでとても重宝されています。

 

引数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は「〇」と「×」だけを表示させるとてもシンプルなものですが、

別シートの一覧表からプルダウンリストの内容を取得して表示させる!

という処理も可能です。

 

別シートの一覧表の情報を編集するとプルダウンリストに表示される内容が自動的に変化します。

 

Left Caption

正解の人

エクセル業務の多い私の職場で大活躍

 

関連記事「別シートの一覧表からリスト情報を取得するVBA」では、

プルダウンリストの表示するVBAや別シートの情報を取得するVBAなど

が詳しく解説されています。

 

 

ドロップダウンリストの項目が増えすぎて扱いづらい!!!

と困っている方は是非チェックしてみてください。

 

プルダウンリストの内容が変化するエクセル家計簿

エクセル家計簿に引数Targetを使ったプルダウンリストを設定することで編集作業がとても楽になります。

 

エクセル家計簿の使い方がこちら

 

セルをクリックすると、

「設定」シートに作成した一覧表の情報をプルダウンリストに表示させる

仕組みになっています。

 

さらに、

クリックしたセルの左のセルの情報でリスト内容が変化する

機能を追加。

 

どういうことかというと、イメージはこんな感じ

 

項目に「日用品」と入力すれば、関連する「ティッシュ」、「洗剤」しか表示されない。

続いて、

項目に「食費」と入力すれば、関連する「野菜」、「魚」しか表示されない。

 

Left Caption

ひらめく人

常に最小限のリスト項目が表示されるので入力作業がとても簡単。

 

項目で「日用品」を選択しているのに、細目で全く関係のない「野菜」や「魚」「肉」がリストに表示されては邪魔でしょうがないですよね。

この仕組みを仕事に応用すれば間違いなく作業効率をアップさせることができます。

 

このエクセル家計簿には他にも数種類のマクロが設定されています。

  • グラフを作成するマクロ
  • 自動集計するマクロ
  • 別シートの情報を転記するマクロ

 

Left Caption

ガッツポーズの人

マクロを設定すれば専用の家計簿ソフト以上に使いやすい

 

関連サイト「マクロを設定したエクセル家計簿」では、

家計簿の記録に必要なマクロが全て設定されたエクセル家計簿をダウンロードしてすぐお使いいただけます。

 

家計簿として使ってもヨシ!

設定されているマクロをVBA学習用として使ってもヨシ!

部分的にマクロを抜き取って仕事用に使ってもヨシ!

 

いろんな活用方法があります。是非ゲットしてくださいね。

 

 

ユーザーフォームが表示されるエクセルカレンダー

エクセルカレンダーに引数Targetでユーザーフォームを表示するマクロを設定しました。

 

エクセルカレンダーの使い方がこちら

 

年数切替は年に数回しか行わない処理なので、「年数切替用のユーザーフォーム」は必要な時にだけ表示したい!という思いから

セルをクリックすると「年数切替を行うユーザーフォーム」を表示するマクロ

を導入しました。

 

イメージとしてはこんな感じ

 

Left Caption

ガッツポーズの人

ユーザーフォームが常に隠れているので使いやすい!

 

エクセルカレンダーには他にも以下のようなマクロが設定されています。

 

  • 年数と日付から曜日を自動調整するマクロ
  • 年間カレンダーと月間カレンダーの内容を同期するマクロ
  • スクロールを省略できるハイパーリンクマクロ

 

「こんな機能あれば便利だなぁー」と感じたマクロを全て導入しました。

 

関連記事「マクロを設定したエクセルカレンダー」では、

「年度切替マクロ」「年間カレンダーと月間カレンダー同期マクロ」などが設定されたエクセルカレンダーをダウンロードしてすぐお使いいただけます。

 

 

 

 

年度が変わっても同じエクセルでスケジュール調整を続けたい!

という方は絶対にゲットしてくださいね。

 

【VBA】引数Targetを使ったVBAの注意事項

 

引数Targetはとても便利なVBAですが、導入には注意が必要です。

 

注意ポイントとしては、

行や列の挿入・削除をされると指定していたセルがズレてしまう恐れがある。

ということです。

 

どういうことかというと、イメージとしてはこんな感じ

仕事をしていると「一覧表の様式変更」は仕方のないことです。

 

  • 行や列を変化させない工夫
  • 様式変更に対応できるマクロ作り
  • 様式変更の影響を受けない計画

 

引数Targetを使う場合、上記のポイントを頭にいれながら作業を進めてみてください。

多くの方が扱うエクセルファイルに引数Targetを導入するときはいろんなことを想定しましょう。

 

VBAの導入でエクセル作業の効率をアップ

 

VBAを導入すれば確実にエクセル業務の効率をアップさせることができます。

 

特に、以下のような方はVBAの導入が絶対におすすめ

  • 毎日同じような作業を繰り返し行っている
  • 人間の思考が必要のない機械的な作業を繰り返し行っている
  • 誰でもできる単純作業を時間をかけて行っている

 

VBAで自動化すれば1日かかって処理していた作業が、たったの1時間で処理することだって夢ではありません。

 

私がVBAを始めることとなったキッカケは、

こんな単純作業で貴重な時間を費やすのはイヤ!自動化してもっとやりがいのある仕事に専念したい!

と思ったからです。

 

  • 時間と氏名を編集して申請書類を作って打ち合わせをして・・・
  • 毎月同じような会議資料を作って全員分印刷をして・・・
  • 写真を貼り付けて決まり文句のようなコメントを記入して編集して・・・

 

Left Caption

疲れ果てた人

何点か必要な項目さえあれば自動化できるのでは!?

 

私と同じようなストレスを抱えている方は、VBAを使って作業効率のアップに挑戦してみてください。

 

思い通りのVBAを作成できるようになれば、今の2倍のスピードで仕事を処理することだって夢ではありません。

 

VBAの勉強をスタートさせるなら、

ネットで知りたいVBA情報を集める方法VBAに関係する参考書で勉強する方法

の2つがおすすめです。

 

このマメBlogで紹介しているVBAは、

ほとんどが「ネット情報」と「参考書の情報」だけで作成したコード

ばかりなんです。

 

プログラマーでもない初心者がネットと参考書の情報だけで効率化マクロの開発は十分可能

ということ。

 

VBAは知りたい情報を簡単に手に入れられるので、

仕事をしていてVBAを勉強する時間がない社会人の方、プログラミングなんて一回も勉強したことがない初心者の方

に超おすすめのプログラミングです。

 

これからVBA学習をスタートさせたい!

という方におすすめの参考書を2種類ご紹介します。

 

VBA初心者におすすめの参考書

ExcelVBA逆引き大全

 

これは、VBAの百科事典的な参考書です。

「背景色を塗りつぶしたい」「罫線を引きたい」のような処理したい内容からコードを検索

することができます。

 

VBAで自動化したいけど、なんのコードを使えばいいのかわからない!

こんな場合にめちゃくちゃ役立ちます。

 

ExcelVBAふりがなプログラミング

 

紹介されている全てのVBAにふりがなが記入されているので、

「このコードはなんのために書かれているのかなぁ。。。」

という迷いなくスラスラ読み進めることができます。

 

参考書に記載されているコードであっても、他人が作ったコードを理解するのって時間がかかりますよね。

 

他人のコードを見たとき、

そんな風に表現しなくてよくない!?

って感じることが多々あります。

 

Left Caption

ガッツポーズの人

ふりがながあれば、こんな問題は解決

 

 

 

情報収集する → 実際にコードを書いてみる → 間違った箇所を調べて修正する

この流れを繰り返し行えば、思い描いた処理をするVBAを開発できるようになるはずです。

 

VBAスキルを習得してエクセル業務に効率アップに役立てましょうー