Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.Sumでセル範囲を指定する

WorksheetFunction.Sumでセル範囲を指定する

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

「excel マクロ 範囲指定 worksheetfunction sum」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

WorksheetFunctionオブジェクトのSumメソッドで合計を計算する際に、セル範囲を指定するにはどのようなコードを書けばいいのか、探している方による検索キーワードです。

「excel マクロ 範囲指定 worksheetfunction sum」
という検索キーワードだけでは詳細がわかりませんので、シンプルなマクロを3つご紹介しておきます。

[スポンサードリンク]

Rangeプロパティの引数を1つ指定

以下のマクロを実行すると、アクティブなシートのA1:A10セルの合計がメッセージボックスに表示されます。
Sub 合計を計算する_Range_1()
 MsgBox _
  WorksheetFunction.Sum(Range("A1:A10"))
End Sub

WorksheetFunction.Sumメソッドの引数に、A1:A10のセル範囲を表すRangeオブジェクトを取得する「Range("A1:A10")」というオブジェクト式を指定しています。

Rangeプロパティの引数に「A1:A10」という文字列を指定しています。

Rangeプロパティの引数を2つ指定

以下のマクロを実行した場合にも、アクティブなシートのA1:A10セルの合計がメッセージボックスに表示されます。
Sub 合計を計算する_Range2()
 MsgBox _
  WorksheetFunction.Sum(Range("A1", "A10"))
End Sub

先のマクロでも利用したRangeプロパティは、実は引数を2つ指定することができて、

WorksheetFunction.Sumでセル範囲を指定する

この場合、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セルの合計がメッセージボックスに表示されます。
Sub 合計を計算する_Range_Cells()
 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オブジェクトを取得するオブジェクト式は、とても応用範囲が広いものです。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » WorksheetFunction » WorksheetFunction.Sumでセル範囲を指定する

「WorksheetFunction」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.