「excel マクロ 範囲指定 worksheetfunction sum」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
WorksheetFunctionオブジェクトのSumメソッドで合計を計算する際に、セル範囲を指定するにはどのようなコードを書けばいいのか、探している方による検索キーワードです。
「excel マクロ 範囲指定 worksheetfunction sum」
という検索キーワードだけでは詳細がわかりませんので、シンプルなマクロを3つご紹介しておきます。
Rangeプロパティの引数を1つ指定
以下のマクロを実行すると、アクティブなシートのA1:A10セルの合計がメッセージボックスに表示されます。MsgBox _
WorksheetFunction.Sum(Range("A1:A10"))
End Sub
WorksheetFunction.Sumメソッドの引数に、A1:A10のセル範囲を表すRangeオブジェクトを取得する「Range("A1:A10")」というオブジェクト式を指定しています。
Rangeプロパティの引数に「A1:A10」という文字列を指定しています。
Rangeプロパティの引数を2つ指定
以下のマクロを実行した場合にも、アクティブなシートのA1:A10セルの合計がメッセージボックスに表示されます。MsgBox _
WorksheetFunction.Sum(Range("A1", "A10"))
End Sub
先のマクロでも利用したRangeプロパティは、実は引数を2つ指定することができて、
この場合、2つの引数で指定されたセル範囲を表すRangeオブジェクトを取得できます。
先のマクロで使っていた「Range("A1:A10")」というオブジェクト式では、Rangeプロパティの1つの引数に「A1:A10」という文字列が指定されていたのに対し、このマクロの「Range("A1", "A10")」というオブジェクト式では第1引数に「A1」という文字列、第2引数に「A10」という文字列が指定されています。
結果として、先のマクロで使っていた、
Range("A1:A10")
というオブジェクト式と、
Range("A1", "A10")
というオブジェクト式は、いずれもA1:A10セルを表すRangeオブジェクトを取得できますが、引数を2つ指定する書き方の便利なケースは少なくありません。
RangeプロパティにCellsプロパティを組み合わせる
ここまで見てきたRangeプロパティの引数に、文字列ではなくCellsプロパティを使ったオブジェクト式を指定することもできます。
以下のマクロを実行した場合にも、やっぱりアクティブなシートのA1:A10セルの合計がメッセージボックスに表示されます。MsgBox _
WorksheetFunction.Sum(Range(Cells(1, 1), Cells(10, 1)))
End Sub
先ほどのマクロでは「Range("A1", "A10")」と、Rangeプロパティの2つの引数に文字列を指定していましたが、ここではCellsプロパティを使ったオブジェクト式を指定しています。
Rangeプロパティの第1引数に「Cells(1, 1)」というオブジェクト式、第2引数に「Cells(10, 1)」というオブジェクト式をそれぞれ指定しています。
このRangeプロパティとCellsプロパティを組み合わせてRangeオブジェクトを取得するオブジェクト式は、とても応用範囲が広いものです。
- Newer:INDEX関数とMATCH関数で月別推移データから前年同月比較表を作成する
- Older:月末日をオートフィルで入力する
Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.Sumでセル範囲を指定する