| 
    
     |  | ▼megu さん: おはようございます。
 
 
 >ユーザーにシート名を変更されたときに起こる問題です。
 >シート名が『Sheet1』のシートの名前をユーザーが別の名前(例えば『Sheet2』)に変えた場合に、Excelシート内の計算式に埋め込まれている『Sheet1』という記述は『Sheet2』に自動変更されるのでこちらは問題ないのですが、
 >マクロ内の『Sheet1』という記述はそのまま残るため、マクロ実行時に『Sheet1』という名前のシートが無い為エラーが起こってしまいます。
 >
 >これに対処するためにシート名を変更されてもマクロから参照できるようにしたいのですが、どのようにすれば良いのでしょうか。
 >
 >ちなみに、一つのシートをxlVeryHiddenに設定しておいて、そのシートからPrevious・Nextで参照するようにしようかと思いましたが、その場合はシートの並び順を変更された場合に誤動作を起こしてしまいました。
 >
 >「シート名を変えないでね」とユーザーにお願いするしかないのでしょうか・・・。
 
 そうですね。ブックの保護を行ってシート名の変更やシートの移動をさせない方法も
 あります。これは私はよくやります。
 
 シート名を変更したり、移動しても良い方法と言うと
 思いついたのは、名前の定義を使用する方法です。
 
 以下のコードで名前の定義を行います。
 
 Sub 定義()
 ActiveWorkbook.Names.Add Name:="sheet1", RefersToR1C1:="=Sheet1!R1C1"
 End Sub
 もちろん、手動操作でも可能です。
 
 参照するときは、
 
 Sub test()
 Range(Names("sheet1").Value).Parent.Select
 End Sub
 
 という方法です。
 参考にしてください。
 
 |  |