中小企業の働き方改革をサポート>>

マクロは初心者ですが、マクロを利用して数式を貼り付けたいです。
苦戦して自分の考えたマクロ、失敗します。

ex A3に入っている数式(=A1+A2)を、適当に選択したセルに、マクロを利用して貼り付けたいです。
ショートカットキーを登録するマクロの方法ではなく、コードだけで登録する方法があればご教授お願いしたいのですが、↓のコードの何が間違っているのでしょうか?

Range("A3").Copy
Selection.PasteSpecial Paste:=xlFormulas

宜しくお願いします。

A 回答 (4件)

ANo.3です。


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

提示されたコードで正常に動作するようです。


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

提示されたコードで動作はします。


何をもって失敗と言われているのですか?
意図した結果とどう異なるのですか?

(例1)
Selection.Formula = Range("A3").Formula
(例2)
Range("A3:E3").Formula = Range("A3").Formula
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/24 14:22

多分、コピー元とコピー先のセルが、両方とも"A3"になっているのではないでしょうか?


Selection を任意のRangeにしてみてください。

行いたい手順を、「マクロの記録」で記録してから書き換えると楽ですよ。
ちなみに、Copyメソッドは、CellsやRangeが対象ですが、Pasteメソッドは、ワークシートが対象です。

参考URLには、ご質問の処理と、簡単な解説がありますので、ご参考まで。

慣れたら、SelectionやActiveなオブジェクトを対象として処理をするのではなく、Workbooks/Worksheets/Range/Cellsなどのプログラム内で明示的なオブジェクトで処理するようにしましょう。

参考URL:http://www.officepro.jp/excelvba/cell_edit/index …
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/11/22 16:48

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBAで複数の数式セルを最終行までコピーするには?

エクセルで下記のような表を作成しています。

   A   B   C   D
1 項目1 数式 数式 数式
2 項目2
3 項目3
  ・
  ・
  ・

B1~D1の数式は項目1を参照したものです。
この時、2行目以下~最終行まで数式をコピーするには、
どのようなVBAを書けばよいでしょうか?

よろしくお願い致します。

Aベストアンサー

Range("A1", Cells(Rows.Count, 1).End(xlUp)).Offset(, 1).Resize(, 3).Formula = Range("B1:D1").Formula

とか?

QExcel VBA - 数式のコピーと値貼り付け

A~Cを使った表があり、AとBには値が入力されています。
C2に"=A2+B2"と入力し、その式を、A列の最終行と同じ行までコピーし、C2からCの最終行までの範囲をコピーして同じ範囲に値貼り付けするにはどういうVBAを書けばいいでしょうか。

宜しくお願い致します。

Aベストアンサー

#1です。
例えば。

Sub bbb()
Dim q As Long
For q = 2 To Cells(Rows.Count, 1).End(xlUp).Row
Cells(q, 3).Value = Cells(q, 1).Value + Cells(q, 2).Value
Next q
End Sub

式は残りません。数値のみです。

Qフォルダ内の全てのBookに同じ処理を繰り返す

フォルダ内にエクセルファイルが約3,000個あります。
この全てのBookに同じ処理をしたいのですが、マクロで繰り返す方法がわからないので教えて下さい。
処理をする内容は簡単なもので、マクロで作りました。

・ 各Bookには1つのシートしか存在せず、シート名は重要ではないので全て「Sheet1」になっています。
・ 各Bookのデータの配置や表形式は同じです。
・ レコードの行数がBookによって異なります。

処理の内容をマクロで作るところまではできましたが、知識がないためタイムアウトです。

ご教示宜しくお願い致します。

Aベストアンサー

だいたいこんな流れで。

sub macro1()
 dim myPath as string
 dim myFile as string

 mypath = "C:\test\"

’指定フォルダのブックを順繰り拾う
 myfile = dir(mypath & "*.xls*")
 do until myfile = ""

 ’ブックを開いて処理を行い保存して閉じる
  workbooks.open mypath & myfile
  activesheet.range("A1") = "DONE"
  activeworkbook.close true

  myfile = dir()
 loop
end sub


必要に応じて
・画面の表示を抑制する
・再計算を手動にする
といった手管を追加して高速化を図ります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報