
2022年度 エクセルマクロ講座入門編22回
今回はマクロで考える力をつけるという意味で、
ワークシートで一番よく使う関数、サム関数をマクロで使う場合は、どうしたらいいかと言うその方法と、
そしてサム関数のような働きをするマクロを作るには、
どんなコードを書けばいいかという2通りの方法を考えてきます。
【コンテンツ】
1.SUM関数をマクロで使うには
2.SUM関数的なコードをマクロでつくるには
(サンプルファイルは、こちらです。 SUM関数をマクロで使うかマクロでつくるか、マクロで考える力をつける、サンプル22回)
毎日合計数を計算しなければならないシートがあって、そのデータの個数は日によって変わります。
データの個数が不定期な場合があるという前提です。

はじめに50個というデータの個数が分かっている時の合計の出し方を考えてみましょう。

これはそのまま50個のデータが入っている、 B 1セルからB 51セルまでを合計しています。 ワークシートファンクションを使って合計した例です。

Public Sub ワークシートファンクションSUM関数()
Dim myRange As Range
Dim Total As Long
Set myRange = Worksheets("Sheet2").Range("B2", "B51")
Total = WorksheetFunction.sum(myRange)
Range("C1") = Total
End Sub
データ数が毎回変わる場合のコードは、レンジ.End(xlDown)を使って、範囲を取得します。
このコードですと、合計範囲が変わってもOKということになります。

Public Sub Sum関数3()
Dim myRange As Range
Dim Total As Long
Set myRange = Worksheets("Sheet2").Range("H2", Range("H2").End(xlDown))
Range("I1") = WorksheetFunction.sum(myRange)
End Sub
まず、データの長さをレンジ.End(xldown)を使って取得します。
Lastrow =Range("B2", Range("B2").End(xlDown).Row
取得したら、1つずつのセルの値をFor文を使って足していけばよいのです。

Public Sub B列でサムつくってみる()
Dim サム As Long
lastRow = Worksheets("Sheet2").Range("B2").End(xlDown).Row
For i = 2 To lastRow
サム = サム + Cells(i, 2)
Next i
Cells(1, 3) = サム
End Sub
実行したところです。
