[[20250523075429]] 『マクロ関数を用いてシート名を取得しているセルの』(ie) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『マクロ関数を用いてシート名を取得しているセルの更新方法』(ie)

いつもお世話になっております。

現在、シート名を

=SUBSTITUTE(INDEX(Book,1),"["&Doc&"]","")

として取得しているセルがあります。
ここで、Bookは=GET.WORKBOOK(1)、Docは=GET.DOCUMENT(88)と定義しています。

シート名を変更した際、自動計算の設定や再計算実行ではセルのシート名が更新されません。
セルをダブルクリック+Enterで更新されるのですが、この作業をせずに更新する方法はあるのでしょうか?

ご存知の方がいらっしゃればどうぞご教授のほどよろしくお願いいたします。

< 使用 Excel:Microsoft365、使用 OS:Windows10 >


 =REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),"")
 という式ではどうでしょう。

 CELL("filename",A1)
 で
 パス[ブック名]シート名
 が得られるのでそこからシート名だけを抜き出している。

 でシート名の変更に合わせて結果も変更されます。
(ノーム) 2025/05/23(金) 08:39:30

 注意点が一つ。

 まだ保存していないブックでは
 CELL("filename",A1)
 は何も返さないので気を付けて。
(ノーム) 2025/05/23(金) 08:44:13

ノーム様

ご回答ありがとうございます。

シートは増減する可能性があり、シート名を取得しているセルはシート名を取得したいシートとは別のシートにあるのです。
情報が後出しになってしまいすみません;

=REPLACE(CELL("filename",A1),1,FIND("]",CELL("filename",A1)),"")

こちらのA1に他シートのセルを入れることは可能なのでしょうか?
(ie) 2025/05/23(金) 08:56:00


 通常通りセル参照を他シートのセルを参照する形(シート名!セル参照)で指定することで可能です。
(ノーム) 2025/05/23(金) 09:09:27

シート名!セル参照にする場合、そのシート名を取得しなければならないので永遠に入れ子のようになってしまう気がします・・・
(ie) 2025/05/23(金) 10:34:38

 下記のユーザー定義関数を使えば、左からn番目のワークシートの名前を返します。
 ワークシート名を変更するのと同時に、自動的に結果に反映されます。

 Function sheetname(n As Long) As String
     Application.Volatile
     sheetname = ThisWorkbook.Worksheets(n).Name
 End Function

 なお、現在もExcel4.0マクロ(GET.WORKBOOKやGET.DOCUMENT)を使っているんですから、
 マクロを使ったユーザー定義関数には抵抗がないものと思います。

 また、INDEX(Book,1)で使っている1は、上記の引数n と同じ考えかたです。    
(xyz) 2025/05/23(金) 10:36:06

xyz 様

ユーザー定義関数を使って自動的に反映することができました。
ありがとうございました。
(ie) 2025/05/23(金) 13:21:25


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.