|
▼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
という方法です。
参考にしてください。
|
|