こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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に映す、と言う事です
よろしくお願いします

投稿日時 - 2008-03-04 14:21:22

QNo.3832070

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

全部のセルに数式ならメモリ不足はしょうがないかと思います。

VBA使って良いなら、必要なタイミングでシート単位でコピー&ペーストすれば良いだけでは?

投稿日時 - 2008-03-04 14:45:39

お礼

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

投稿日時 - 2008-03-04 16:33:44

ANo.1

=Sheet1!A1 という式そのものに、意味がありますかね?

狙いは「入力したものを間違って消したり変更させたくない」んです
から、こういう直接参照だと、間違って消したらSheet2の方も消えて
しまいますよ。データのバックアップは「リアルタイムじゃない」から
意味があるんです。

ということで、そういう発想を止めて「セルの内容が変更されたとき」
に起動するマクロを使って、必要な場所をコピーする、という方針で
行ったほうが良いんじゃないでしょうか。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html

こうすれば、例えば「どこそこのセルは変更しちゃいけない=VBAを
動作させない」という方法で、記入/修正ミスをバックアップに反映
させないことことが出来ます。

投稿日時 - 2008-03-04 14:39:21

補足

回答ありがとうございます

>=Sheet1!A1 という式そのものに、意味がありますかね?

との事ですが、全セル参照させることで原本(Sheet1)は保護したまま
Sheet2を加工させられると考えました
Sheet2の数式を間違って消したり値を入れてしまっても、そのセルに入っていたのは
Sheet1を参照する、と言う定型の式なので、比較をするにしても元に戻す事にしても
簡単に出来ると思ったのです

ファイルを共有で使い
入力フォームを使って入力する担当者と
ワークシートを使ってオートフィルタやグラフ・ピボットテーブルなどの加工を行う担当者
それから、結果のデータを見る人間と全部違う者がやりますので
データの異変が起きたときに原因を探るのを容易にしたかったのです
元になるデータは遡及修正もさせないでおきたいのです
ですので

>「セルの内容が変更されたとき」
>に起動するマクロ

を使う場合、内容が変更された時に変更を無効にする
と言う方向で考えなくてはなりませんが、もう少し検討してみます

投稿日時 - 2008-03-04 16:08:37

あなたにオススメの質問