2日後に編集:より良い問題の説明、修正された再生手順と余分な結論を追加。私は同じブックに新しいシート(これはむしろ愚かな運動のthe backgroundを参照)のようにシートの内容を移動する必要があり不必要な範囲の名前移動奇妙な
- これは今もthe bigger question of how to reliably move sheets aboutの一部です。私の最初の推測はsourceSheet.Cells.Cut destSheet.Cells
でした。
しかし、私のシートにはすべてシートスコープの名前が定義されており、シート間で参照されます。このカット/ペーストを実行すると、移動されるデータへのすべてのリンクがそのまま残っているとみなされ、名前のすべてのユーザーは正しく更新されます。私が恐怖を感じたのは、Excelが特定の状況下でワークシートスコープの名前のワークブックスコープの重複を追加して切り替えることです。
これは手動で行う場合にも発生します。
- シート1とシート2の両方がA1
- シート1とシート2の両方式を経てB1にその名前を使う「=ソースに設定された「ソース」という名前のシート固有の名前を持って次のセット・アップしてくださいあなたが開いたときに今、効果をSheet1のすべてのコンテンツを選択して、シート3
に貼り付け=シート1!ソース 『
、私はシート実際には「リフレッシュ」(そう、元を削除し、コンテンツ上に移動)する必要があるため、私が取る必要がある次のステップはにある:
- うち古いシート1を入れそれをこれが行われた後に新しいシートに
を古いものの名前を付け悲惨だ、と
=<workbook file name>!Source
に変換されました。つまり、今では代わりにワークブック固有のものを参照しています。 これは私の状況では受け入れられません。このブックのスコープ付きバージョンは、シートのコピーを再度作成するような、私のソリューションのさらなる動作を邪魔しているからです(Excelでは、コピーで使用する)。そして、私は実際にシートを「リフレッシュ」したいだけで、何百万もの古いスケルトンを収集することはありません。
私は既にSheet3にシートスコープバージョンを保持し、ワークブックスコープの1つのcqをヌークする名前重複除外コードを追加しようとしました。シートスコープのシート1はすぐに解消するシート1(これ以前のように適切な名前定義を復元する)。しかしこれはSheet2!C1の式を#NAME?
に変換します。これは論理的なものです。今度は、すべてのシート上のすべての式をスキャンして事前または後で式を修正する余分なコードを追加することもできますが、これでは十分ではありません。データ検証リストには名前を使用することもできます。その名前はすぐにはわからない特殊なコードになります。
したがって、用紙自体とは別のシートの内容を移動すると、フォークの両方の枝が後でブックの異なる部分で使用されるその時点で範囲名がフォークされるようです。言い換えれば、混乱...
私はこの不幸な状況をどのように回避できるかについての提案を誰かが持っていますか?
遅く返事をして申し訳ありません(私はmsのインフルエンザの日付だった)。私は自分のステップも試してみたのですが、私もそれらを再現できないことがわかりました。私が実際に説明しようとした状況では、後でSheet1を削除することもあります。私はこの詳細で質問を更新します。残念ながら、このような状況では、recalcはそれをもう修正しません... –