Excel 2013 マクロ講座 52回

複数セルにハイパーリンクを設定

実務では、会社名一覧の列があり、その隣の列には会社のアドレスを記載するなどということがあるかと思います。
今回は、選択した複数セル、つまりセル範囲に、その隣の列に入力されたアドレスで、ハイパーリンクを設定します。

(サンプルファイルは、こちらから 3行マクロ52回サンプルデータ

選択した複数セルにハイパーリンク

サンプルの表は、A列にタイトル、B列にURLを入力してあります。
A列のタイトルに対して、B列のURLをハイパーリンクとして設定しましょう。
ハイパーリンクの場合、対象セルやアドレスがそれぞれ違うので、一つ一つのセルに対して動作を行うことになり、それを選択範囲のセルに繰り返すことになります。
複数セルにハイパーリンクを設定するマクロマクロ1

For Each 構文でハイパーリンクを繰り返す

繰り返しの処理には、For Each 構文を使います。
For Each 構文の使い方です。
For Each~Nextステートメント
変数は、選択範囲のセルなので、ここでは選択セルとしましょう。
これだけで、ほぼコードができたようなものです。
Sub 選択範囲にハイパーリンク()
    Dim 選択セル As Range
    For Each 選択セル In Selection
        実行したい処理
     Next 選択セル
End Sub
複数セルにハイパーリンクを設定するマクロマクロ2
Hyperlinks.Addメソッドの構文は、以下なので、これを実行したい処理の部分に当てはめてみます。
オブジェクト.Hyperlinks.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)
今回は、 Anchorと Addressだけ設定します。
Addressは、選択セルの隣の列のValueということで
選択セル.Offset(0, 1).Value
これで1列左の列に移動します。
選択セル.Hyperlinks.Add 選択セル, 選択セル.Offset(0, 1).Value
複数セルにハイパーリンクを設定するマクロ1
選択した複数セルにハイパーリンクを設定するコードは、このようになります。
Sub 選択範囲にハイパーリンク()
    Dim 選択セル As Range
    For Each 選択セル In Selection
        選択セル.Hyperlinks.Add 選択セル, 選択セル.Offset(0, 1).Value
     Next 選択セル
End Sub
ハイパーリンクを設定したいセル範囲を選択してマクロを実行します。
マクロが実行され、ハイパーリンクが複数セルに設定されましたね。
複数セルにハイパーリンクを設定するマクロ2
ハイパーリンクを設定した後は、アドレスのURLは不要という場合もあるかもしれません。
そのような場合のコードは、選択セルの隣、選択セル.Offset(0, 1)の 中身をクリアするというコードを加えます。
Sub 選択範囲にハイパーリンクしてアドレスは削除()
    Dim 選択セル As Range
    For Each 選択セル In Selection
        選択セル.Hyperlinks.Add 選択セル, 選択セル.Offset(0, 1).Value
        選択セル.Offset(0, 1).ClearContents
    Next 選択セル
End Sub
このコードを実行すると、ハイパーリンクが設定された後、アドレスのURLは削除されます。
複数セルにハイパーリンクを設定するマクロ3
いかかでしたか?マクロでハイパーリンクを設定するのは、コードも難しくありませんでしたし、活用範囲も広いと思います。
今日の講義は以上です。お疲れ様でした。
スポンサーリンク
スポンサーリンク