Bob muss die SUMME-Funktion in einem Makro verwenden, um die Summe aller Werte in einer Spalte zu ermitteln. Das Problem ist, dass die Anzahl der zu summierenden Zellen variiert. Für einen Lauf des Makros könnten es 100 Zellen sein, für den nächsten 300 und für den dritten nur 25.

Erstens ist es einfach, die meisten Arbeitsblattfunktionen (wie z. B. SUM) innerhalb eines Makros zu verwenden. Sie müssen dem Funktionsnamen lediglich „Application.WorksheetFunction“ voranstellen. oder einfach „WorksheetFunction“. Wenn Sie also wissen, dass für jeden Lauf des Makros A1: A100, dann A1: A300 und schließlich A1: A25 summiert werden müssen, können Sie ein Makro wie das folgende verwenden:

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

Dieses Makro verwendet ein For. . . Nächste Schleife, um verschiedene Bereiche von zu summierenden Zellen anzugeben. Anschließend wird die SUM-Arbeitsblattfunktion verwendet, um die Summe der Ergebnisvariablen zuzuweisen, die (endgültig) in eine Zelle in Spalte B gestopft wird. Die Ergebnisse des ersten Laufs werden in B1, das zweite in B2 und das dritte in B3 eingegeben .

Obwohl dieses spezielle Makro möglicherweise nicht so nützlich ist, zeigt es verschiedene hilfreiche Techniken, z. B. das Definieren eines benannten Bereichs, die Verwendung der SUMME-Funktion und das Einfügen der Summe in eine Zelle. Das Makro zeigt nicht, wie eine variable Anzahl von zu summierenden Zellen ausgewählt wird. Verwenden Sie dazu am besten die End-Methode des Range-Objekts. Die folgende Codezeile zeigt, wie Sie die Summe des Bereichs ab A1 bis kurz vor die erste leere Zelle in der Spalte füllen können:

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

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

Beachten Sie, dass ein Bereich (myRange) so definiert ist, dass er mit A1 beginnt und sich über alles erstreckt, was die End-Methode zurückgibt. Dies wird dann summiert und in B1 gestopft.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (9180) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365. Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: