VBA記事7. WorkSheetFunction.Sum(合計値計算)
**************************************
Sub 合計計算()
Dim i As Variant ' variant でなくLongでも可能
Dim SUMRANGE As Variant ' variant でなくRangeでも可能
Set SUMRANGE = Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
' Set SUMRANGE = Range(Cells(1, 1), Cells(10, 1))
Cells(i,2) =Application.WorksheetFunction.Sum(SUMRANGE))
End Sub
**************************************
上記のようなコードになります。
注意点として、最終行を取得するのが
Cells(Row.count,1).End(xlUP).End(xlUP)
となっており、これまでと違って.Rowを付けるとエラーになります。
これは変数SUMRANGEが範囲であるためです。
いままでは
Dim i As Long もしくはvariant でLongは大雑把に言うと整数でした。
しかしSUMRANGEにはセルのここからここまでという情報が格納されており、それは整数でなく、範囲です。
なので、 最後に.Rowを付けると、縦列の数を整数として表現するので、エラーとなります。
また、set =という文章を使ってSUMRANGEに範囲を格納していますが、
これは範囲がオブジェクトといわれるものだからです。
VBAではシートやセル(範囲)、ブックなどはオブジェクトと呼ばれています。オブジェクトは直訳すると、物体という意味ですが、簡単に言うと、人間の目にもシートやセルやブックは物体として見えるからです。
これも覚えてしまうしかありません。

コメント
コメントを投稿