EXCEL2003でセルを書換えるマクロの方法

このQ&Aのポイント
  • EXCEL2003でセルを書換える方法について質問があります。セルB2:J2までの各セルに数式が入っており、セルL2に入力された内容によって各セルにデータが表示されるような物があります。セルのデータを書換えるためのマクロについて説明してください。
  • セルのデータを書換えるためのマクロを組む方法について質問があります。セルB2:J2までの各セルには数式が入っており、セルL2に入力された内容によって各セルにデータが表示されます。セルB2の内容を書換える場合はセルB250に元の数式を入れた状態に戻す必要があります。アクティブセルの位置によって、同じ列の数式を選択して貼り付けるようにする方法をご教示ください。
  • EXCEL2003でセルを書換えるマクロを組む方法について質問です。セルB2:J2までには数式が入っており、セルL2に入力された内容によって各セルにデータが表示されます。マクロを使ってセルの値のみをコピーして表示させる方法を教えてください。また、セルの値を書換えた後、元の数式の入ったセルに戻すためのマクロの組み方を教えてください。
回答を見る
  • ベストアンサー

EXCEL2003 書換えたセルを元に戻すマクロ

お世話になります。 質問に関してですが、次のような内容になります。 セルB2:J2までの各セルに数式が入っており、セルL2に入力された内容によって各セルにデータが表示されるような物があります。 例えば、B2のセルのデータ内容を書換えるとします。通常であれば数式によりデータが表示されている為、データを書換える為には数式を消さなければなりません。 そこで、内容を書換える為にマクロを組んでおり、コマンドボタンを押すと、セルの値のみをコピーしてセルに表示させています。(アクティブセルをコピー→形式を選択して貼付け→値のみを貼付ける、という動作をマクロにしています) この書換えた内容を元に戻す(元の数式の入ったセルに戻す)為のマクロの組み方について質問があります。 書換える前のセルの数式をセルB250:J250に入れているのですが、 セルB2の内容を書換える場合はセルB250、セルG2の内容を書換えるにはセルG250のように アクティブセルの位置によって、同じ列の数式を選択して貼付けるようにするにはどうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

要するに、 アクティブ列の250行目の式を、アクティブセルに「数式を貼り付け」 してやれば良いんですよね? 例えば、ごく簡単に考えて Sub myUndo()     Cells(250, ActiveCell.column).copy     ActiveCell.PasteSpecial Paste:=xlFormulas     Application.CutCopyMode = False End Sub コレだけで良いと思いますが、いかがでしょう。

kinetic7274
質問者

お礼

ありがとうございます! スゴク単純な事でしたね。。 期待通の結果になり安心しました!

その他の回答 (1)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>書換える前のセルの数式をセルB250:J250に入れている 例えばB2:J2の式を250行にコピーしといたとか「ではなく」,2行目に入るべき数式の「文字通り」が250行に待避してあるとします。 作成例: sub macro1()  if application.intersect(activecell, range("B2:J2")) is nothing then exit sub  activecell.formula = cells(250, activecell.column).formula end sub

kinetic7274
質問者

お礼

ありがとうございます。

関連するQ&A

  • Excel2002マクロ セルのアクティブ状態移動

    お世話になります このようなことができるのかどうか分からないのですが、もしできるのであればその方法を知りたいです。 実行する内容は、特定のセル範囲で、指定した時間毎にセルのアクティブ状態を移動するというものです。 対象となる特定のセル範囲は、最大で([A1]~[J9])+([A10]~[G10])の合計97個のセルです。 このセル範囲は、その日によって変わります。 より上の行を優先にして、更に、より左のセルを優先にして、36個であったり、47個であったり、49個であったり、ほかの数の場合もあります。 この対象となる特定のセルの個数は[E14]のセルに入っている値で指定しています。 その日対象となる範囲のセルには数値が入っているかまたは空欄のどちらかです。 入っている数値は1~97の範囲でランダムで、重複する数値はありません。 アクティブ状態の移動先は、移動前にアクティブになっているセルの右隣。 セルのアクティブ状態が対象範囲の一番右端まで行った場合、次はその下の行の左端のセルです。 更に、セルのアクティブ状態がその日の対象範囲の一番右下まで行った場合、次は[A1]です。 アクティブ状態が移動する時間間隔は[G15]のセルに入っている時間です。 マクロ開始後[G15]のセルに入っている時間経過後、セルのアクティブ状態が移動します。 更に[G15]のセルに入っている時間経過後、その次のセルがアクティブになっていきます。 例えば次の条件の場合  対象となる特定のセル範囲は([A1]~[J3])+([A4]~[B4])  マクロ開始前のアクティブセルは[G3]  [E14]のセルに入っている値は32  [G15]のセルに入っている時間は30秒 の場合 マクロ開始30秒後、アクティブセルは[H3]になります。 その後、30秒毎にアクティブ状態は移動していきます [I3][J3][A4][B4][A1][B1][C1]・・・ このマクロを終了させるのは、マウスで直接別のセルをアクティブにしたとき、または、矢印キーでアクティブセルを移動したときなどにしたいですが、可能な方法が限られているようでしたらその方法にします。 以上よろしくお願いします。

  • アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。

    アクティブセル以下をコピーするマクロの設定の仕方が分かりません。Excel2000です。 B列(B3:B402)のどのセルをアクティブにした場合でも、"アクティブセルをそれ以下のセル全て(B402まで)に オートフィルでコピーする"マクロを設定したいのですが、 自動記録だとアクティブセルはセル番号で記載されてしまうため、応用が利きません(というか分かりません)いずれかのセルをアクティブにし、コマンドボタンを押すと それ以下のセルにコピーされるという流れです。 私なりに調べてみましたが分かりません。 どなたかご教示願えませんでしょうか?

  • EXCEL VBAを使ってマクロを組んだのですが、消えてしまいます。

    VBAを使ってマクロをEXCELに組んだのですが、貼り付け先のデータをダブルクリックするとデータが消えてしまいます。 組んでいるマクロは (前提) ファイルA・・コピー元データ ファイルB・・貼り付け先データ (内容) Aファイルでマクロを実行すると、Aファイルの内容がBファイルにコピーされるというものです。 Aファイルの元データは数式のため、Aファイル内でいったん値として貼り付けてから再度コピーして、Bファイルに貼りつけています。 Aファイルは自分で作成したものですが、Bファイルは他社作成のため、もろもろ変更ができません。 Aファイルにもロックが必要のため、保護をかけています。(ロック、表示ともに) マクロ実行後、Bファイルの貼りつけされたデータをダブルクリックすると、ダブルクリックしたセル内容が消えてしまいます。 まったく原因がわからず困っています。すみませんがどなたかわかるかたお願いいたします。

  • エクセルでのマクロについての質問です

    毎日行数の違うデータの隣に数式を入力してフィルでコピーしていますが簡易のマクロを組んでみました。ですが行数が変わるためマクロ登録した時の行数までしか数式がコピーされません。 画面1のようにC1、D1セルの数式をフィルでコピーしたマクロを登録しました。画面2のようにデータが多くなるとC5、D5までしかコピーされません。最初はC1、D1だけに数式を入力してマクロ実行後、フィルでコピーしていましたが面倒な為、現在は行数を多く設定していますが無駄に数式が入るためにデーターが重くなります。マクロでB列の最下セルを検索しその列までC,Dセルをコピーというなマクロが出来るなら教えて頂きたいです。VBAの知識を必要とすると思いますがよろしくお願いします。

  • エクセル フィルタをかけたセルに貼り付け

    お世話になります。 エクセルのシートでフィルタをかけたセルの、選択した範囲のみをコピーして、 同じ範囲に値貼り付けしたいのですが、よい方法が浮かびません。 フィルタで表示するセルには、数式(VLOOKUP)が入っていて、別シートの値を参照しています。 元データが変更されると、数式で表示されている値も変わってしまうので、 VLOOKUPで引っ張ってきた後に、値貼り付けをして、値を確定させたいのです。 フィルタをかけたセルへのコピーは、マクロを使わないとできないことは分かったのですが、 実際にマクロを組むことができず困っています。 助けていただけませんでしょうか。 ----------------------------------------------------- 参考として、現在次のようなフォームを使い、生産・販売・在庫の管理をしています。   A     B    C   D   E   F   G    H    I 1顧客名 製品名     10/1 10/2 10/3 10/4 10/5 10/6・・・・ 2 A社   AAA  生産   3           販売 4           在庫  5 B社   BBB  生産 6           販売 7           在庫 8 C社   CCC  生産 9           販売 10          在庫 列は、日付になります。 行は、製品ごとの生産、販売、在庫が入ります。 在庫行は、「生産数-販売数」の数式が入っています。 生産行は、依頼先から送られてくる生産実績ファイルをもとに、VLOOKUPで参照しています。 フィルタで「生産」だけを表示し、任意の範囲をコピー⇒値貼り付けできるようにしたいです。 宜しくお願い致します。

  • マクロで可視セルのみの削除

    A行に数字を入れ、B行にA行同列セルの数字に対して 数値を返す数式を入れています。 B行は非表示にしています。 (C・D行、E・F行・・・とも同じ処理) 数字を入力する範囲(A、C、E・・・)を選択し、 入力されている数字を消去するようマクロを組みました。 (範囲選択→ツールの編集→ジャンプ→可視セルを選択後、Delete) これはうまく作動します。 が、数式が壊れるのを防ぐ為、念には念を・・・と、 入力範囲部分はセルの書式設定で保護ロックを外し、 シートを保護しました。 そうすると、保護されているからだめ!と エラーが出て、マクロが作動しません。 (可視セル選択部分にデバッグがでます。) ・非表示のセルがある ・一部を除きシートを保護している 状態で、マクロで可視セルのみ削除することは不可能なんでしょうか? 宜しくお願いします。

  • excel2010貼り付け

    あるセルに入れた数式を他のセルにコピーする際、形式を選択して貼り付けから数式をコピーした結果、数式欄には正しい数式が表示されているにも関わらず、セル自体の表記は値を貼り付けた場合の値になってしまいます。原因と解決策を教えてください。

  • セルの値だけを貼り付けるマクロ:アクティブの1行下

     セルの値を  そのセルの1行上のセルの値と同じものにする。  ・・・というマクロを組んでいます。それに関して多くの方よりアドバイスを頂戴しました。 次のような数式で、ひとまず上手くいきました。 Cells(RR, 7) = Cells(RR - 1, 7).Value   (RRとは、アクティブになっているROWを、AS LONG として宣言したものです。) ■次に、「(RR,2) ・・・ すなわち、2列目のセルについては(G7)セルの値だけを貼り付けたかったので、・・・頂戴したアドバイスを元に、いろいろ試し・・・たのですが、うまくいきません。  具体的には、次のような数式をトライしました。  ↓ Range(RR, 2).Value = Range("G7").Value ・・・これで、ダメだったので、 Cells(RR, 2) = Cells("G7").value ・・・でも試しましたが、ダメでした。  このような場合は、どうしたらよいでしょうか?     アドバイスを、どうぞよろしくお願いいたします。 

  • マクロでできますか?

    マクロでやろうと思ってもいい方法がおもいつきません。どうやったらいいでしょうか? ある条件(例えばA1にある数式がありその値が10以上になったとき)をクリアしたら、A5~B9のデータを D5~E9にコピーし、また条件をクリアしたらA5~B9のデータを今度はF5~G9にコピーするというように条件をクリアするごとにとなりへコピーしたいのです。 コピーは50回くらい繰り返す予定です。 コピーしていく方向もどうしてもこのように列方向にしたいのです。 よろしくおねがいします。

  • 【EXCEL】 結合されたセルを参照した式

    1.EXCELで、数式で計算する時に元になるデータ(Sheet1のセル)に結合されたセルを指定しています。 2.Sheet2に上記の結合セルを参照した数式を作成しようと考えています。  a.セルに = (イコール)を入力し  b.Sheet2の目標セル(B1:C1)をクリック  c.Enterキーを押すと  入力された数式が  ='Sheet1'!B1:C1  となってしまい、エラー(#VALUE!)になってしまいます。  入力後に数式を手で修正して   ='Sheet1'!B1  とすれば正常に値が表示されますが、他のシートはこんな修正をしなくても   ='SheetXX'!B1  のように表示されます。 どこを修正(確認)したらいいのかわからない状態です。 どなたかご存知の方がおりましたらよろしくお願いいたします。

専門家に質問してみよう