【VBA】アクティブなシートに関係なく指定したシートにハイパーリンクを挿入したい

前提

VBAでのHyperlinks.addについて分からない事象が発生しており困っています。
素人ながら色々ネットで調べてみたのですが解決できずご質問させていただいています。
対策と後学の為に原因の理解をしたいと考えております。

実現したいこと

アクティブなシートに関係なく、指定したワークシートの指定したセルにハイパーリンクを挿入したいです。

発生している問題・エラーメッセージ

Sheet1のRange(”A25”)に変数でパスを入力したリンクをハイパーリンクで挿入しようとすると
現在ActiveなシートであるSheet2のRange("A25")に指定したハイパーリンクが挿入されます。
要望としてはアクティブなシートに関係なく正常にSheet1にハイパーリンクを挿入したいです。
(それともHyperlinksはアクティブなシートに反映されるものなのでしょうか。)

ご参考までに、前後でハイパーリンクを使わず、セルに文字挿入しているのですが、それはSheet1に正常に入力されます。

該当のソースコード

Sub test()

Dim sheet as string
Dim add as string
sht = "Sheet1"
add = "C\file.xlsm"

MsgBox Activesheet.Name '"Sheet2"が表示されます。

Workshhets(sht).cells(1, 1).Value = 1 'Sheet1(1,1)に"1"が入力されます。

Worksheets(sht).hyperlinks.add Anchor:=Range("A25"), Address:=add, TextToDisplay:="〇" '"Sheet2のA25に〇というテキストにaddというリンクのハイパーリンクが挿入されています。"

Workshhets(sht).cells(2, 1).Value = 2 'Sheet1(2,1)に"2"が入力されます。

End Sub

VBA

試したこと

Sheet1だけの状態にして(アクティブなシートがSheet1)、マクロ走らせると正常に動作します。
※恐らくアクティブなシートになぜかハイパーリンクの文だけ反映されてしまっていると思います。

補足情報(FW/ツールのバージョンなど)

Excel2016 win10

コメントを投稿

0 コメント