マクロ記録でVBA
計算結果を入れる

Excelマクロの自動記録を使って、エクセルVBAの初心者向け入門解説
公開日:2013年5月以前 最終更新日:2013-02-18

第10回.計算結果を入れる


前回作成した100マス計算の回答部分を、マクロで計算して入れてみましょう。


従って、マクロの記録は使いません。


タイトルと違うね(笑)、でもね、マクロの記録では出来ない事が多いのです。


だから、VBAを覚える必要があるのです。



では、プログラムを提示してから解説しましょう。


元のプログラムは、前回作成した、「.COPY」を使わずに値のコピーをするプログラムです。


Sub Macro1()
  Dim i
  Dim j
  i = 2
  Do While i <= 11
    j = 2
    Do While j <= 11
    Cells(i, j) = Cells(i, 1) * Cells(1, j)
    j = j + 1
    Loop
    i = i + 1
  Loop
End Sub


太字の部分のみ変更しています。


計算結果を入れるセルが、

Cells(i, j)


ここには、同行の1列目のセル同列の1行目のセル掛け算を入れる訳です。


これが、Cells(i, 1) * Cells(1, j)

になります。


Cells(i, 1)は、i行1列目のセル


Cells(1, j)は、1行j列目のセル

これで、一瞬で100マスに計算結果が埋められます。


100マスの計算結果を消してから実行してみて下さい。





四則演算の演算子は、ワークシートと同様です。


+:足し算

-:引き算

*:掛け算

/:割り算


また、計算順序もワークシートと同様です。


*/が先に計算され、次に+-となります。


しかし、計算順序は、()で必ず明記するようにしましょう。





計算をワークシート上で行い、その結果の値を取り出して、再度セルに入れる方法もあります。


第8回と、第9回で作成したマクロの組み合わせになります。


Sub Macro2()

  Range("B2:K11").FormulaR1C1 = "=RC1*R1C"
  Sheets("Sheet1").Range("B2:K11").Copy
  Sheets("Sheet2").Range("B2").PasteSpecial _
    Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End Sub



この解説は既にしましたね。


Range("B2:K11").FormulaR1C1 = "=RC1*R1C"
絶対参照と相対参照の組み合わせです。

RC1は、同じ行の、1列目のセル

R1Cは、1行目の、同じ列


Sheets("Sheet1").Range("B2:K11").Copy
これで、セル範囲をクリップボードにコピーします。


Sheets("Sheet2").Range("B2").PasteSpecial _
    Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False,

値の貼り付けです。



では、2重ループを使って、セルを1つずつ処理してみましょう。




Sub Macro3()
  Dim i
  Dim j
  i = 2
  Do While i <= 11
    j = 2
    Do While j <= 11
    Cells(i, j).FormulaR1C1 = "=RC1*R1C"
    Cells(i, j).Value = Cells(i, j).Value
    j = j + 1
    Loop
    i = i + 1
  Loop
End Sub


注意点は、太字の部分だけです。


Cells(i, j).FormulaR1C1 = "=RC1*R1C"
これで、計算式をセルに入れています。

入れた直後に、ワークシートで再計算されます。


Cells(i, j).Value = Cells(i, j).Value
これで、値を取り出し、同じセルに入れ直しています。


Cells(i, j).FormulaR1C1 = "=RC1*R1C"
この直後、

Cells(i, j).FormulaR1C1には、"=RC1*R1C"が入っており、

Cells(i, j).Valueには、その計算結果が入っています。

そして、Valueに値を入れた時点で、FormulaR1C1も計算式ではなく、数値が入ることになります。



上のような、マクロの途中で、その内容(セルや変数)を確認したい場合は、


VBE(Visual Basic Editor)のイミディエイトを使います。


その方法については、次回に説明します。





同じテーマ「マクロの記録でVBA」の記事

第7回.別のシートにコピーする2
第8回.計算式を入れる
第9回.計算式をコピーする
第10回.計算結果を入れる
第11回.イミディエイトで値の確認
第12回.セルに色を塗る
第13回.罫線を引く
第14回.行列を入れ替えて貼り付け
第15回.いろいろな消去
第16回.行の挿入・削除
第17回.並べ替え


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ