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ではシートやセル(範囲)、ブックなどはオブジェクトと呼ばれています。オブジェクトは直訳すると、物体という意味ですが、簡単に言うと、人間の目にもシートやセルやブックは物体として見えるからです。

これも覚えてしまうしかありません。


コメント