Excel VBA 質問スレッド №2123 (解決済)
非表示のシートをハイパーリンクで表示する方法
投稿者 : aa 投稿日時 : 2025/06/05(Thu) 15:49:23 OS : Windows 11 EXCEL : Office 365
Excelのブックに複数のシートが存在します。
これらシートを非表示にして、目次シートを追加して目次からハイパーリンクで目的のシートを表示したいです。
ネットでいろいろ調べ、VBAのコードを試してみたのですが、非表示のためかハイパーリンクが機能しません。
途方にくれていたところ、ここにたどり着きました。
ご教授いただけると幸いです。
Excelのブックに複数のシートが存在します。
これらシートを非表示にして、目次シートを追加して目次からハイパーリンクで目的のシートを表示したいです。
ネットでいろいろ調べ、VBAのコードを試してみたのですが、非表示のためかハイパーリンクが機能しません。
途方にくれていたところ、ここにたどり着きました。
ご教授いただけると幸いです。
スポンサーリンク
[返信 1] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : さんこう 投稿日時 : 2025/06/05(Thu) 16:59:48
>非表示のためかハイパーリンクが機能しません。
HYPERLINK関数でつくったハイパーリンクでは使えませんが、参考になれば。
<excel vba ハイパーリンク 非表示シートを表示>
https://www.google.com/search?q=excel+vba+%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%AF+%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA
>非表示のためかハイパーリンクが機能しません。
HYPERLINK関数でつくったハイパーリンクでは使えませんが、参考になれば。
<excel vba ハイパーリンク 非表示シートを表示>
https://www.google.com/search?q=excel+vba+%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%AF+%E9%9D%9E%E8%A1%A8%E7%A4%BA%E3%82%B7%E3%83%BC%E3%83%88%E3%82%92%E8%A1%A8%E7%A4%BA
[返信 2] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : higeru 投稿日時 : 2025/06/06(Fri) 08:39:46
非表示シートに対するハイパーリンクをクリックしたところで何も起きませんから、そこは「再表示」するしかありません。
こんな感じでしょうか。リンク先のシート名にスペースが含まれる場合も考慮しました。HYPERLINK関数は FollowHyperlink イベントが発生しないので対象外。
それより
> 目次シートを追加して目次からハイパーリンクで目的のシートを表示したい
ということだと、たとえば目次シートに移った時に非表示に戻すという処理も必要かと。
非表示シートに対するハイパーリンクをクリックしたところで何も起きませんから、そこは「再表示」するしかありません。
こんな感じでしょうか。リンク先のシート名にスペースが含まれる場合も考慮しました。HYPERLINK関数は FollowHyperlink イベントが発生しないので対象外。
それより
> 目次シートを追加して目次からハイパーリンクで目的のシートを表示したい
ということだと、たとえば目次シートに移った時に非表示に戻すという処理も必要かと。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) If Target.SubAddress = "" Then Exit Sub Dim wsName As String: wsName = Replace(Split(Target.SubAddress, "!")(0), "'", "") If Worksheets(wsName).Visible = False Then Worksheets(wsName).Visible = True Dim linkCell As String: linkCell = Split(Target.SubAddress, "!")(1) Application.Goto Worksheets(wsName).Range(linkCell) End If End Sub
[返信 3] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : aa 投稿日時 : 2025/06/06(Fri) 13:48:26
higeru様
できました!とてもシンプルで解読が難しいですが、理想通りに動作しました。
>ということだと、たとえば目次シートに移った時に非表示に戻すという処理も必要かと。
これが悩ましいのですが、複数のシートが存在するため、以下で考えているのですが
いい方法があれば教えていただきたく存じます。
Select Case Sh.Name
Case "sheet1"
Sh.Visible = xlSheetHidden
Case "sheet2"
Sh.Visible = xlSheetHidden
Case "sheet3"
Sh.Visible = xlSheetHidden
higeru様
できました!とてもシンプルで解読が難しいですが、理想通りに動作しました。
>ということだと、たとえば目次シートに移った時に非表示に戻すという処理も必要かと。
これが悩ましいのですが、複数のシートが存在するため、以下で考えているのですが
いい方法があれば教えていただきたく存じます。
Select Case Sh.Name
Case "sheet1"
Sh.Visible = xlSheetHidden
Case "sheet2"
Sh.Visible = xlSheetHidden
Case "sheet3"
Sh.Visible = xlSheetHidden
[返信 4] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : higeru 投稿日時 : 2025/06/06(Fri) 16:04:29
Workbook_SheetDeactivate に書く想定ならそれでよいかと。
ただそれなら以下のようにまとめられます。
Case "Sheet1", "Sheet2", "Sheet3"
Workbook_SheetDeactivate に書く想定ならそれでよいかと。
ただそれなら以下のようにまとめられます。
Case "Sheet1", "Sheet2", "Sheet3"
[返信 5] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : aa 投稿日時 : 2025/06/06(Fri) 16:49:53
higeru様
ありがとうございました!
全て解決しました。
お世話になりました。
higeru様
ありがとうございました!
全て解決しました。
お世話になりました。
当掲示板について
- Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
- 記事内ではHTMLのタグは使用できません。
- 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
- Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
- Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
( 処理日時 : 2025-07-04 14:54:36 )