1

wkshtA と wkshtB の 2 つのワークシートを含む Excel ワークブックがあります。どちらもローカルの名前付き範囲を持っています (各名前付き範囲のスコープは親シートのみです)。wksht B の一部のセルは A の名前付き範囲を参照していますが、A のセルは B の名前付き範囲を参照していません。

同じブック内の各シートのコピーを作成するマクロがあります。これはうまくいきます。

問題は、ワークシート A を削除すると、ワークシート A にあったすべての名前でネーム マネージャーに多数の #ref エラーが表示されますが、それぞれのスコープが「ワークブック」に変更されていることです。ただし、これは、ワークシート B を削除する前にワークシート A を削除した場合にのみ発生します。逆の順序で削除すると、A のすべての名前付き範囲がシートと共に削除されます。

もう 1 つの奇妙な点は、A を削除し、すべての #ref エラーを削除してから B を削除し、新しいコピーを作成するマクロを実行してから、A を再度削除しても、#ref エラーが再発しないことです。

私は困惑しています...何かアイデアはありますか?ありがとう。

4

1 に答える 1

1

問題は、B から A への参照を定義する方法にあったことが判明しました。たとえば、A の範囲と B の範囲の両方に「Premium」という名前がありました。私は言ったコードのスニペットを持っていました

worksheets("B").range("Premium").formula = "='A'!Premium"

これは実際にはうまくいきましたが、ワークシート A を削除しても、名前付き範囲は削除されませんでした。式の定義を次のように変更します

worksheets("B").range("Premium").formula = "='A'!" & worksheets("A").range("Premium").address

トリックをした

于 2013-05-09T22:22:53.163 に答える