まず「目次」のシートの各セルに「1」~「5」の値を入力して、そのセルにハイパーリンクを挿入し「リンク先」を「自分自身」にします。
「自分自身にリンク」とは、つまり、A1セルにハイパーリンクを置いたら、リンク参照先を「目次!A1にする」のです。
この時、ハイパーリンクの「表示文字列」は「1」とか「2」とかになっている筈です。この「1」~「5」の値が、飛び先のシート名になります。
次に、目次シートの「イベントプロシージャ」に、以下のVBAコードを書きます。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If IsNumeric(Target.Range.Text) = True Then
Sheets(Target.Range.Text).Visible = True
Sheets(Target.Range.Text).Select
Selection.Range("A1").Select
Sheets("目次").Visible = False
End If
End Sub
次に「シート1」から「シート5」に「目次に戻る」というハイパーリンクを作ります。
これも「リンク先」を自分自身にしておきます。
次に、「1」~「5」の全シートの「イベントプロシージャ」に、以下のVBAコードを、それぞれ書きます。
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Text = "目次に戻る" Then
Sheets("目次").Visible = True
Sheets("目次").Select
Sheets("目次").Cells(Val(Target.Range.Worksheet.Name), 1).Select
Sheets(Target.Range.Worksheet.Name).Visible = False
End If
End Sub
なお、上記のルーチンは「目次」シートの「1」~「5」のハイパーリンクが「A1」~「A5」に置いてある事を想定しています。
「A1~A5」と異なるセル位置にする場合は
Sheets("目次").Cells(Val(Target.Range.Worksheet.Name), 1).Select
の行を、ツジツマが合うように修正して下さい。
例えば「C1~C5」にするなら
Sheets("目次").Cells(Val(Target.Range.Worksheet.Name), 3).Select
にします。例えば「A3~A7」にするなら
Sheets("目次").Cells(Val(Target.Range.Worksheet.Name) + 2, 1).Select
にします。例えば「C3、C5、C7、C9、C11」にするなら
Sheets("目次").Cells(Val(Target.Range.Worksheet.Name) * 2 + 1, 3).Select
にします。
お礼
ありがとうございます 指定してできるのはありがたいです 試してみます