マクロ講座14回

 選択範囲に合計入力するマクロ

今回は、選択範囲に合計入力するマクロをマクロの記録から作成してみましょう。
(サンプルファイルは、こちらから マクロ講座14回サンプルデータ

選択範囲に合計入力するマクロ 

マクロの記録開始します。
●赤い丸のマクロの記録ボタンを押します。
セルE2:E4を選択して、

=SUM(B2:D2)と入力し、

CTRLキーを押しながらEnterキーを押します。
マク□の記録を終了します。
■青い四角の記録終了ボタンを押します。
できましたか?
それでは、マクロの中身を見てみましょう。
【コードの解説】
Range("E2:E4").Select
  ----E2:E4の範囲を選択します。
Selection.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
  ----選択範囲に =SUM(RC[-3]:RC[-1]
             という数式を代入します。
ポイント
ワークシートでは入力確定時に、Ctrlキーを押しながらEnterキーを押すことにより、 選択範囲のすべてのセルに値や数式を入力することができます。

VBAで同じことをする場合、セル範囲を表すRangeオブジェクトに対して、 そのFormulaR1C1プロパティに値や数式を代入することで一括で処理できます。
数式の場合、コードでは、セル番地がR1C1形式で相対的に表されますので、 「おや?」と思ったかもしれません。
でも、ワークシート上では本来の設定通り(通常はA1形式)で表示されます。

VBAで数式を入力したり数式を取得するのには、Formulaプロパティ、FormulaR1C1プロパティを使います。
Formulaプロパティは「A1形式」でセル番地を指定するのに対して、 FormulaR1C1プロパティは行(ROW)と列(Column) を数値で指定します。

マクロは「ステートメント」と呼ばれる命令文の集まりです。
ステートメントとは、1つの完結した命令文のことです。
突然そんなこと言われても、
「いったい何のこっちゃ?」って思いますよね。

マクロの中身を見てもらいながら、説明しましょう。

スポンサーリンク
スポンサーリンク

Sub Macro1()
    Range("E2:E4").Select
    Selection.FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
End Sub    
  改行コードで区切られた1行1行が、ステートメントなんです。

  マクロは、
    ステートメントの集まりで、

  まず1行目は、Subステートメント、
  2行目と3行目は、Excelの機能を実行するためのステートメント
  4行目は、End Sub ステートメント

  の範囲までです。

  そして、この範囲のことを「Subプロシージャ」ともいいます。

 マクロ=Sub プロシージャ
 
 と考えておきましょう。
 Sub ステートメント
        ・・・マクロの開始位置  
 ステートメント
        ・・・1行1行が、VBAの命令文 
 End Sub ステートメント
        ・・・マクロの終了位置


 ここで注意しなければならないことは、
 命令文=ステートメントは1行で書くということです。
 
 ステートメントは1行に記録しなければならないのですね。

 もし、長い命令文の時は、どうするのかって?
 そのときは、行末に行継続を現すために、
 
 半角スペースとアンダースコア (_) →『 _』

 がついているので、次の行に継続していると判断されます。

記録で作成したコードの簡素化

また、記録で作成したコードを簡略化するために、
Select Selectionコードを省略します。
○○.Select 
Selection.×× 
出来上がったコードです。すっきりしてますね。
Sub Macro1()
    Range("E2:E4".FormulaR1C1 = "=SUM(RC[-3]:RC[-1])"
End Sub    

今日の講義は以上です。お疲れ様でした。
スポンサーリンク
スポンサーリンク