Excel VBA > VBA:実務活用 > ハイパーリンクのクリックでマクロを実行する
このエントリーをはてなブックマークに追加

ハイパーリンクのクリックでマクロを実行する

ハイパーリンクをクリックして作成したマクロを起動するには

Excelで作成したマクロを実行させる方法はいくつか方法があります。手軽な方法としては図形(オートシェイプ)に割り当てる方法です。
一方でホームページのリンクのような動作でマクロを実行させる場合はこの図形に割り当てる方法が取れません。
そこで今回は下記の方法を使って、ハイパーリンクをクリックしてマクロを実行する方法を説明します。
ハイパーリンクからマクロを実行した時の画面

ハイパーリンクからマクロを実行した時の画面

ハイパーリンクのイベントを使う

ExcelのVBA側では、セルに設定されているハイパーリンクをクリックされたことを掴むことができるイベント「FollowHyperlink」が用意されています。
このイベントを使うと、ハイパーリンクがクリックされたことをプログラム側で検知できるので、そこから実行したいマクロ(プロシージャ)をCallします。
一見難しいそうに思えるかもしれませんが、実はそれほど難しくありません。

FollowHyperlinkイベントの問題

問題というと少し意味が変わるかもしれませんが、このイベントではハイパーリンクをクリックするとリンク先が実行(開くなど)されてしまいます。
単純にマクロを実行(処理)したいだけの場合、この「リンク先実行」が不要だったりしますのでこの点を回避するようにします。

実際に試してみる

それでは実際に試してみたいと思います。
大まかには下記の準備が必要です。
1.セルにハイパーリンクを設定する
2.FollowHyperlinkイベントにプログラムを書き込み

1.セルにハイパーリンクを設定する

ここではプログラムは関係なく、通常通りの操作で設定をしますが、一点注意があります。
それは参照先を自分自身にするということです。
hyperlink_macro__02

hyperlink_macro__03
上記ではハイパーリンクをクリックすると設定元である「A1」に飛ぶということになります。

もちろん参照先を実行しつつ、マクロを実行させたい場合は、もともと必要な参照先を入力してもOKです。
以降はこちら側の作業は不要となり、あとはプログラム側で勝手に判断させるイメージです。

2.FollowHyperlinkイベントにプログラムを書き込み

次にFollowerlinkイベントにプログラムを記述します。
今回は予め標準モジュールに作成した「テスト1」をハイパーリンクで実行させます。

標準モジュールに作成

標準モジュールに作成

そして今度はThisWorkBookのモジュールから該当のイベントを指定します。
下記画像の矢印の流れにそっていけばイベントの枠組みが表示されます。

イベントを表示するにはThisworkbookを使う

イベント表示までの手順

そこに次のように記述します。

イベント発生時に「テスト1」をコール

イベント発生時に「テスト1」をコール


これでセルのハイパーリンクをクリックするとメッセージボックスが表示されます。
一つのシートに複数のハイパーリンクを設定した場合は、このイベントの引数であるTargetを使って、呼び出し元のセルの位置、文字内容で条件分岐すれば、それぞれのハイパーリンクに応じた処理を実行することもできます。

ここでの注意点としては、この「Followerlink」はブック、シート単位で使えます。
今回はブックレベルでのFollowerlinkイベントを使っています(厳密には「SheetFollowHyperlink」となります)。
そのため、複数のシートにハイパーリンクを設定している場合でも対応ができます。
ただしハイパーリンクのセルの位置などによっては「どのシートのハイパーリンク」かを見る必要が出てくるので、このイベントの引数である「Sh」を使って対処する必要があります。

カテゴリ:VBA:実務活用