質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

9825閲覧

ブック内のハイパーリンクで「参照が正しくありません」と表示される。

ice930

総合スコア99

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/11/11 23:27

同じブック内のシートのインデックスを作る表を作ったのですが、リンクの設定が上手くいきません。

「インデックス」というシートの中に、他のシートの名前から「ジャンル」と「名前」をそれぞれ抽出し、それぞれ別のセルに入力しています。(ジャンル:B列、名前:C列)

シート名は、「ジャンル(名前)」となっており、「()」までの文字数から抽出する「データ」と「ジャンル」を判別しています。

※()までの文字数を変数 bgn とし、bgn=0の場合は(Continue)で飛ばし、1の場合はジャンルを「テンプレ」としています。(シート名が「(テンプレ)」となっているので。)

以下のコードは問題なく実行されるのですが、リンクが上手くいきません(「参照が正しくありません」となってしまいます。)

Sub インデックス作成() Dim ws As Worksheet Dim ws01 As Worksheet 'インデックスのシート Dim ws_Name As String Dim I As Long Dim Row As Long Set ws01 = ActiveSheet '書き込むシートを指定 Row = 3 '3行目から入力 For Each ws In Worksheets '他のワークシート全て繰り返します。 If ws.Name <> ws01.Name Then 'インデックス以外のワークシートを巡回する bgn = InStr(ws.Name, "(") ed = InStr(ws.Name, ")") lg = ed - bgn If bgn = 0 Then '名前なし GoTo Continue ElseIf bgn = 1 Then Cells(Row, 2) = "テンプレ" Else Cells(Row, 2) = Mid(ws.Name, 1, bgn - 1) 'ジャンルを記入 End If Cells(Row, 1) = Row - 2 ws01.Hyperlinks.Add Anchor:=ws01.Cells(Row, 3), Address:="", SubAddress:=ws.Name & "!A1", TextToDisplay:=Mid(ws.Name, bgn + 1, lg - 1) Row = Row + 1 End If Continue: Next ws End Sub

関係の無い情報が多いかと思いますが、どこに問題が有るかわからなかったため、コードの内容を書かせていただきました。
このコードはこちらのサイトを参考に書かせていただきました。
https://akira55.com/hyperlink/

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

シート名はシングルクォートで囲むようですね。

"'Sheet2'!A2"

VBA

1 2SubAddress:="'" & ws.Name & "'!A1"

HyperLinkでググると、シート名の前に"#"を付けるともありましたが。
どちらも、ジャンプできました。

VBA

1SubAddress:="#'" & ws.Name & "'!A1"

投稿2020/11/12 00:55

akiruno-oneone

総合スコア815

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ice930

2020/11/12 02:32

正常に動きました!ありがとうございます!
guest

0

vba

1ws01.Hyperlinks.Add Anchor:=ws01.Cells(Row, 3), Address:="", SubAddress:="'" & ws.Name & "'" & "!A1", TextToDisplay:=Mid(ws.Name, bgn + 1, lg - 1)

投稿2020/11/12 00:47

radames1000

総合スコア1923

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ice930

2020/11/12 02:33

回答の通りでした。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問