ボブは、列内のすべての値の合計を見つけるために、マクロでSUM関数を使用する必要があります。問題は、合計されるセルの数が変化することです。マクロを1回実行すると、100セルになる可能性がありますが、次の実行では300セルになり、3回目では25セルになります。

まず、マクロ内からほとんどのワークシート関数(SUMなど)を簡単に使用できます。関数名の前に「Application.WorksheetFunction」を付けるだけです。または単に「WorksheetFunction」。したがって、マクロを実行するたびにA1:A100、A1:A300、最後にA1:A25を合計する必要があることがわかっている場合は、次のようなマクロを使用できます。

Public Sub Sum_Demo()

Dim myRange     Dim Results     Dim Run As Long

For Run = 1 To 3         Select Case Run         Case 1             myRange = Worksheets("Sheet1").Range("A1", "A100")

Case 2             myRange = Worksheets("Sheet1").Range("A1", "A300")

Case 3             myRange = Worksheets("Sheet1").Range("A1", "A25")

End Select         Results = WorksheetFunction.Sum(myRange)

Range("B" & Run) = Results     Next Run End Sub

このマクロはForを使用します。 。 。合計するセルのさまざまな範囲を指定する次のループ。次に、SUMワークシート関数を使用して、結果変数に合計を割り当てます。結果変数は、(最終的に)列Bのセルに詰め込まれます。最初の実行の結果はB1に入れられ、2番目はB2に入れられ、3番目はB3に入れられます。 。

この特定のマクロはそれほど有用ではないかもしれませんが、名前付き範囲を定義する方法、SUM関数を使用する方法、合計をセルに詰め込む方法など、いくつかの有用な手法を示しています。マクロが実行しないのは、合計するセルの可変数を選択する方法を示すことです。これを行うには、RangeオブジェクトのEndメソッドに依存するのが最善です。次のコード行は、A1から始まり、列の最初の空白セルの直前までの範囲の合計を詰め込む方法を示しています。

myRange = ActiveSheet.Range("A1", Range("A1").End(xlDown))

Range("B1") = WorksheetFunction.Sum(myRange)

範囲(myRange)は、A1で始まり、Endメソッドが返すものを拡張するものとして定義されていることに注意してください。次に、これが合計され、B1に詰め込まれます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(3217)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。

link:/ excelribbon-Using_SUM_In_a_Macro [マクロでのSUMの使用]