95009

[code]

    Private Sub Workbook_Open()
    
    Dim i
    For i = 1 To Worksheets.Count
      ActiveSheet.Hyperlinks.Add Anchor:=Range("M" & i), _
      Address:="", _
      SubAddress:=Worksheets(i).Name & "!A1", _
      TextToDisplay:=Worksheets(i).Name
    Next
    
    End Sub
    
[/code]

Excelのマクロ

![](https://i.stack.imgur.com/5Y6RG.png)


CC BY-SA 4.0
2023-05-29T07:29:53.310
95006
2023-05-30T07:10:56.880
2023-05-29T09:06:56.550
3060
29507
question
excel
Excelのマクロを使っているのですがmenuの中のセルをクリックしてもエクセルのタブがひらけません


`SubbAddress`の行を下記のように書き直してください。

[code]

    '修正前
    SubAddress:=Worksheets(i).Name & "!A1", _
    '修正後
    SubAddress:="'" & Worksheets(i).Name & "'!A1", _
    
[/code]

シート名が数式などを含む場合には、シート名をシングルクォーテーション(`'`)で囲まないと暗黙の型変換の前に自動計算が発生してしまい、正しくリンクが貼れないようです。

**修正前のコードでは正しく動作しないシート名の例**

  * 数式を含む: `0001-1`, `1+23`
  * 空白を含む: ` Hoge`, `Fuga `, `1 2`

単純な前ゼロや日本語の文字列は未確認ですが、一律でシングルクォーテーション("'")で囲って文字列として連結するのが無難でしょう。


CC BY-SA 4.0
2023-05-29T09:42:23.830
95009
2023-05-29T09:42:23.830
9820
95006
answer


やりたいことが正確には読み取れませんが、`A1`セルにシート名が記述されている時、当該シート名にジャンプするハイパーリンクを作成したいということでしょうか？
VBAは不要で通常の数式で実現できます。具体的には

[code]

    =HYPERLINK("#"&ADDRESS(1,1,1,1,A1),A1)
    
[/code]

という数式で実現できます。

  * [`ADDRESS`関数](https://support.microsoft.com/ja-jp/office/address-%E9%96%A2%E6%95%B0-d0c26c0d-3991-446b-8de4-ab46431d4f89)  
引数で指定されたセルを参照する文字列を作成します。

  * [`HYPERLINK`関数](https://support.microsoft.com/ja-jp/office/hyperlink-%E9%96%A2%E6%95%B0-333c7ce6-c5ae-4164-9c47-7de9b76f577f)  
指定された内容でハイパーリンクを作成します。ドキュメントにはありませんが、先頭に`#`を付けるとブック内リンクとして解釈されるようです。


CC BY-SA 4.0
2023-05-29T22:27:20.267
95012
2023-05-29T22:27:20.267
4236
95006
answer


テキストから参照先のシートにハイパーリンクをつけるのであれば、  
テキストを選択し、挿入→リンク→ハイパーリンクで参照先のシートを選択すればできます。

あとは、メニューのシートと参照先のシートを分割表示すればできませんか？


CC BY-SA 4.0
2023-05-30T05:17:56.013
95016
2023-05-30T07:10:56.880
2023-05-30T07:10:56.880
50767
50767
95006
answer