• 締切済み

Excel2000で全てのセルを別のシートにコピー

OS:WinXP-Home Office:Excel2000 を使用して、VBAの入力フォームを作成しています 複数のTextboxとComboboxを使い、結果をエクセルシート上に反映させるだけのものです 入力したものを間違って消したり変更させたくないので 入力結果のエクセルシート(Sheet1)を保護して リアルタイムで別のシート(Sheet2)に全く同じ物を編集用にコピーして オートフィルタやその他の機能を使いたいと思っています そこで、Sheet2のA1セルに =if(Sheet1!A1<>"",Sheet1!A1,"") と言う式を入力して、A~Z列の全てのセルにコピーしたところ 「メモリ不足です」 と言うエラーが出て進みません 一度に全ての行をコピーしたからかと思い、少しずつコピーしたのですが ある程度の回数をコピーするとやはり「メモリ不足です」と出てしまうので 結論からこのやり方は不可能だと思いますが =Sheet1!A1 とすると、全部のセルに問題なくコピーできます ですが、その場合、空白セルのコピー結果が「0」に表示されるので不都合です メモリをあまり消費しないif式の書き方や 別の関数での対処方法 0の時は表示しない方法 などの何か良い対処方法があれば教えてください やりたいのは Sheet1の全データをリアルタイムにSheet2に映す、と言う事です よろしくお願いします

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

全部のセルに数式ならメモリ不足はしょうがないかと思います。 VBA使って良いなら、必要なタイミングでシート単位でコピー&ペーストすれば良いだけでは?

Bluejoy12
質問者

お礼

回答ありがとうございます おっしゃるとおり、シートのコピー&ペーストをVBAでやるか 入力フォームで同じデータを複数のシートに入力すると言うのが現実的なんでしょう 全セル数式はメモリ不足になる、今更ながらいい勉強をしたと思う事にします

  • FEX2053
  • ベストアンサー率37% (7995/21380)
回答No.1

=Sheet1!A1 という式そのものに、意味がありますかね? 狙いは「入力したものを間違って消したり変更させたくない」んです から、こういう直接参照だと、間違って消したらSheet2の方も消えて しまいますよ。データのバックアップは「リアルタイムじゃない」から 意味があるんです。 ということで、そういう発想を止めて「セルの内容が変更されたとき」 に起動するマクロを使って、必要な場所をコピーする、という方針で 行ったほうが良いんじゃないでしょうか。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html こうすれば、例えば「どこそこのセルは変更しちゃいけない=VBAを 動作させない」という方法で、記入/修正ミスをバックアップに反映 させないことことが出来ます。

Bluejoy12
質問者

補足

回答ありがとうございます >=Sheet1!A1 という式そのものに、意味がありますかね? との事ですが、全セル参照させることで原本(Sheet1)は保護したまま Sheet2を加工させられると考えました Sheet2の数式を間違って消したり値を入れてしまっても、そのセルに入っていたのは Sheet1を参照する、と言う定型の式なので、比較をするにしても元に戻す事にしても 簡単に出来ると思ったのです ファイルを共有で使い 入力フォームを使って入力する担当者と ワークシートを使ってオートフィルタやグラフ・ピボットテーブルなどの加工を行う担当者 それから、結果のデータを見る人間と全部違う者がやりますので データの異変が起きたときに原因を探るのを容易にしたかったのです 元になるデータは遡及修正もさせないでおきたいのです ですので >「セルの内容が変更されたとき」 >に起動するマクロ を使う場合、内容が変更された時に変更を無効にする と言う方向で考えなくてはなりませんが、もう少し検討してみます

関連するQ&A