VBAのハイパーリンクでSubAddressに変数を使う方法は?

※ 当サイトではアフィリエイト広告を利用しています

 

VBAでハイパーリンクを作ったけど、クリックしたとき『参照が正しくありません。』と出てしまい、うまく設定できないことがあります。

またSubAddressに変数を使うことはできないのでしょうか?

 

こういったお悩みにお答えします。

 

 本記事の内容

1.VBAのハイパーリンクで「参照が正しくありません。」となる原因や対策は?

2.「SubAddress:=」の後に変数を使う方法は?

 

VBAでハイパーリンクを作成したはいいものの、クリックすると「参照が正しくありません。」とはじき返されることって、たまにありませんか?

一体なにが原因で、どのように対策すればいいのか。

また、SubAddressに変数を使う方法はどうすればいいのか、お答えしたいと思います。

 

ちなみに筆者は、Excelとマクロだけで、社内で年間約1000時間以上の業務効率化を達成した実績があります。

したがって、本記事の信頼性は高いといってもいいでしょう。

 

VBAのハイパーリンクで参照が正しくありませんとなる原因と対策

 

VBAで作ったハイパーリンクをクリックしたとき、なぜ「参照が正しくありません。」と表示されるのでしょうか?

ここからは、原因や対策を解説していきます。

 

VBAのハイパーリンクで参照が正しくありませんと出る原因は?

 

この原因はずばり、NGな記号を含んでいるからです。

 

 NGな文字列の例

!”#$%&'()-=^~@`{};+,<>(半角・全角ともに)

 

たとえば、以下のようなシート名を設定しているとNGになります。

シート名を「(~~)」のようにすることって、よくありますよね。

やっかいです。

 

以上の通り、ハイパーリンクに記号を含めるとNGとなります。※

ではどのようにしたらいいでしょうか?

実は、この解決方法はいたってシンプルなんです。

※MicroSoftのヘルプには「シート名に記号を含めてはいけない」といった注意書きはありませんでした。

 

VBAのハイパーリンクで参照が正しくありませんと出る場合の対策は?

 

ということで解決方法は以下の通り、非常にシンプル。

 対策

「SubAddress:=」の後の文字列を「 ‘ 」シングルクォーテーションで囲みましょう。

簡単ですよね。

文字列を「 ‘ 」で囲むだけでOKなんです。

 

 シングルクォーテーションで囲んでみる

 

では実際にやってみましょう。

具体的には、以下のようにすれば大丈夫です。

SubAddress:=ws.Name & “!A1”

↓↓↓↓

SubAddress:=“‘” & ws.Name & “‘” & “!A1”

 

ここで注意すべきは、「 ‘ 」(シングルクォーテーション)を「 ” ” 」(ダブルクォーテーション)で囲むということです。

この辺は慣れるしかないですね。

 

実際のコードに落とし込んでみると、以下のようにすればいいでしょう。

こちらを

こうするだけです!

以上の通り、文字列を「 ‘ 」(シングルクォーテーション)で囲えば、たとえNGの記号が入っていても問題なく動作します。

 

VBAのハイパーリンクでSubAddress:=の後に変数を使う方法は?

 

Hyperlinksコレクション.Addメソッドの引数は4つもあって、ややこしいですよね。

そこで、リンク先を指定する「SubAddress」の後の記述をスッキリさせるために、できるだけ変数を使いたいですよね。

例えば、

SubAddress:=”‘” & ws.Name & “‘” & “!A1”

SubAddress:= 変数

このような感じにしたいですよね。

大丈夫です。この場合もとても簡単です。

さきほどの対策をしておけばバッチリ使えます!

 

変数の使い方

 

SubAddressに変数を使う方法は、以下の通りです。

変数 = ”‘” & ws.Name & “‘” & “!A1”

SubAddress:= 変数

 

このように、SubAddress:=の後に直接記述した場合と同じように、事前に変数に入れておけばOKです。

 

コードに落とし込んでみる

 

では実際に、コードに記述してみましょう。

 

以上のようになります。

つまり、

①事前に、変数「strSheetname」を宣言

②変数「strSheetname」にシート名を格納する

③SubAddress:=に、変数「strSheetname」を入れる

とても簡単ですよね!

とにかく、「 ‘ 」(シングルクォーテーション)の囲み忘れには注意しておきましょう。

 

VBAのハイパーリンクでSubAddressに変数を使う方法のまとめ

 

ということで、ハイパーリンクで「参照が正しくありません。」と表示されてしまう原因と対策、「SubAddressに変数を使う方法」について解説させていただきました。

いかがでしたでしょうか?

実は私も2~3年前、同じようなところでつまづいて、1~2日くらい頭を悩ませていた経験があったんです。

読者のみなさんには、こういったお悩みで、大切な時間をかけてほしくありませんので、これからもお役に立つ情報を発信していきたいと思います!

最後までご覧くださり、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。