• ベストアンサー

エクセル マクロ 数式の貼り付け

マクロは初心者ですが、マクロを利用して数式を貼り付けたいです。 苦戦して自分の考えたマクロ、失敗します。 ex A3に入っている数式(=A1+A2)を、適当に選択したセルに、マクロを利用して貼り付けたいです。 ショートカットキーを登録するマクロの方法ではなく、コードだけで登録する方法があればご教授お願いしたいのですが、↓のコードの何が間違っているのでしょうか? Range("A3").Copy Selection.PasteSpecial Paste:=xlFormulas 宜しくお願いします。

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

  • ベストアンサー
  • mar00
  • ベストアンサー率36% (158/430)
回答No.4

ANo.3です。 そうであればA3の数式を相対参照にして のところは そうであればA3の数式を絶対参照にして の誤りです。

その他の回答 (3)

  • mar00
  • ベストアンサー率36% (158/430)
回答No.3

提示されたコードで正常に動作するようです。 以下は違っていれば読み流して下さい>。 例えばA3の数式をB3にコピーすると=B1+B2になるので 失敗すると言っているのでしょうか。 これは数式が相対参照になっているので正常なことです。 どのセルにコピーしても数式(=A1+A2)としたいのでしょうか。 そうであればA3の数式を相対参照にして =$A$1+$A$2すればよいと思います。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

提示されたコードで動作はします。 何をもって失敗と言われているのですか? 意図した結果とどう異なるのですか? (例1) Selection.Formula = Range("A3").Formula (例2) Range("A3:E3").Formula = Range("A3").Formula

TEXASHAPPY
質問者

お礼

数式を絶対参照にすると上手くいきました。 ご回答有難うございました。

  • muunoy
  • ベストアンサー率38% (70/183)
回答No.1

多分、コピー元とコピー先のセルが、両方とも"A3"になっているのではないでしょうか? Selection を任意のRangeにしてみてください。 行いたい手順を、「マクロの記録」で記録してから書き換えると楽ですよ。 ちなみに、Copyメソッドは、CellsやRangeが対象ですが、Pasteメソッドは、ワークシートが対象です。 参考URLには、ご質問の処理と、簡単な解説がありますので、ご参考まで。 慣れたら、SelectionやActiveなオブジェクトを対象として処理をするのではなく、Workbooks/Worksheets/Range/Cellsなどのプログラム内で明示的なオブジェクトで処理するようにしましょう。

参考URL:
http://www.officepro.jp/excelvba/cell_edit/index7.html
TEXASHAPPY
質問者

お礼

早速のご回答有難うございました! しかし、マクロは超初心者の為、回答内容も理解に苦戦しております。 ネットでもかなり調べているのですが、まだまだ基本的な事から勉強する必要があるみたいです。 ご回答頂きまして、重ねて、お礼申し上げます。

関連するQ&A