2017-01-27 9 views
1

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!ソース 『

  • シート2は、また、式を経てC1にシート1のソースを指し、』名前マネージャーは、「ソース」の名前がstiであることですSheet2と(現在の)Sheet3にシートスコープの名前として定義されていますが、Sheet1自体にも定義されています。 Sheet1のバージョンはSheet3!A1を指しています...セルC1のSheet2の数式もこのリダイレクトSheet1の名前バージョンを使用します。しかし

    、私はシート実際には「リフレッシュ」(そう、元を削除し、コンテンツ上に移動)する必要があるため、私が取る必要がある次のステップはにある:

    • うち古いシート1を入れそれをこれが行われた後に新しいシートに

    を古いものの名前を付け悲惨だ、と

  • (ここでは関係ありません)、Excelは、Sheet2のは、まだ名前のSheet1!ソースを使用していることを見て、明らかに親切に推進することを決定しますそれはSheet3!A1を指している、ワークブックスコープの名前「Source」に変換されます。 C1のSheet2の式は=<workbook file name>!Sourceに変換されました。つまり、今では代わりにワークブック固有のものを参照しています。

    これは私の状況では受け入れられません。このブックのスコープ付きバージョンは、シートのコピーを再度作成するような、私のソリューションのさらなる動作を邪魔しているからです(Excelでは、コピーで使用する)。そして、私は実際にシートを「リフレッシュ」したいだけで、何百万もの古いスケルトンを収集することはありません。

    私は既にSheet3にシートスコープバージョンを保持し、ワークブックスコープの1つのcqをヌークする名前重複除外コードを追加しようとしました。シートスコープのシート1はすぐに解消するシート1(これ以前のように適切な名前定義を復元する)。しかしこれはSheet2!C1の式を#NAME?に変換します。これは論理的なものです。今度は、すべてのシート上のすべての式をスキャンして事前または後で式を修正する余分なコードを追加することもできますが、これでは十分ではありません。データ検証リストには名前を使用することもできます。その名前はすぐにはわからない特殊なコードになります。

    したがって、用紙自体とは別のシートの内容を移動すると、フォークの両方の枝が後でブックの異なる部分で使用されるその時点で範囲名がフォークされるようです。言い換えれば、混乱...

    私はこの不幸な状況をどのように回避できるかについての提案を誰かが持っていますか?

  • 答えて

    0

    あなたのシナリオでは、Excel 2010で重複は発生しません。しかし、私は時々これを観察しました。

    グローバル名をコードで削除して(数式の結果を#REFに変換する)、の後に同じシートスコープの名前を追加することができます。シート上の数式は何も変更せずに新しい名前を取得し、再計算で十分です。

    これはデータ検証ソースでも機能します。グラフでは、私が知る限り、名前付き参照を使用することはできません。名前が使用できる他の場所については、ちょうどテストしてください...

    +0

    遅く返事をして申し訳ありません(私はmsのインフルエンザの日付だった)。私は自分のステップも試してみたのですが、私もそれらを再現できないことがわかりました。私が実際に説明しようとした状況では、後でSheet1を削除することもあります。私はこの詳細で質問を更新します。残念ながら、このような状況では、recalcはそれをもう修正しません... –