Excel VBA 質問スレッド №2123 (解決済)

非表示のシートをハイパーリンクで表示する方法

投稿者 : aa     投稿日時 : 2025/06/05(Thu) 15:49:23     OS : Windows 11     EXCEL : Office 365
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

[返信 2] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : higeru     投稿日時 : 2025/06/06(Fri) 08:39:46
非表示シートに対するハイパーリンクをクリックしたところで何も起きませんから、そこは「再表示」するしかありません。
こんな感じでしょうか。リンク先のシート名にスペースが含まれる場合も考慮しました。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

[返信 4] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : higeru     投稿日時 : 2025/06/06(Fri) 16:04:29
Workbook_SheetDeactivate に書く想定ならそれでよいかと。
ただそれなら以下のようにまとめられます。

Case "Sheet1", "Sheet2", "Sheet3"

[返信 5] Re : 非表示のシートをハイパーリンクで表示する方法
投稿者 : aa     投稿日時 : 2025/06/06(Fri) 16:49:53
higeru様

 ありがとうございました!
 全て解決しました。
 お世話になりました。

当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-04 14:54:36 )
タイトルとURLをコピーしました