Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Summenbildung Range/Cells

Summenbildung Range/Cells
29.09.2015 11:46:32
Robin
Hallo Ihr lieben,
ich stelle mich gerade total an, die Summe aus einem Bereich richtig in einen Code zu packen... Kann mir bitte jemand bei der Korrektur dieser einen Code-Zeile helfen?
In die Variable lngSumme soll die Summe aus dem (dynamischen) Bereich T1:Tstrzeile geschrieben werden. Momentan wird mir der Fehler 1004 geliefert, da ich nicht weiß, wie genau ich diesen Bereich anspreche bzw. dessen Summe bilde.

lngSumme = Application.Sum(Sheets("Daten").Range(Cells(1, 20), Cells(strZeile, 20)))
Vielen Dank im Voraus,
Robin

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Summenbildung Range/Cells
29.09.2015 12:31:14
JoWE
Hallo Robin,
so vllt.?
Sub AdditionWerte()
Dim sh As Worksheet
Dim myRng As Range
Set sh = ThisWorkbook.Sheets("Tabelle1")
Set myRng = sh.Range(sh.Cells(1, 20), _
sh.Cells(sh.Cells(sh.Rows.Count, 20).End(xlUp).Row, 20))
MsgBox Application.WorksheetFunction.Sum(myRng)
End Sub

Gruß
Jochen

Anzeige
AW: Summenbildung Range/Cells
29.09.2015 13:46:21
EtoPHG
Hallo Robin
Der Fehler wird wegen der unvollständigen Adressierung geworfen:
With Sheets("Daten")
lngSumme = Application.Sum(.Range(.Cells(1, 20), .Cells(CLng(strZeile), 20)))
End With
Gruess Hansueli
;
Anzeige
Anzeige

Infobox / Tutorial

Summenbildung in Excel mit VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (deine Datei)" und wähle Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Sub AdditionWerte()
       Dim sh As Worksheet
       Dim myRng As Range
       Dim lngSumme As Double
    
       Set sh = ThisWorkbook.Sheets("Daten") ' Ersetze "Daten" durch den Namen Deines Arbeitsblatts
       Set myRng = sh.Range(sh.Cells(1, 20), sh.Cells(sh.Cells(sh.Rows.Count, 20).End(xlUp).Row, 20))
    
       lngSumme = Application.WorksheetFunction.Sum(myRng)
       MsgBox "Die Summe beträgt: " & lngSumme
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.
  5. Führe das Makro aus: Gehe zu Entwicklertools > Makros, wähle AdditionWerte und klicke auf Ausführen.

Häufige Fehler und Lösungen

  • Fehler 1004: Tritt auf, wenn der Bereich nicht korrekt adressiert ist. Stelle sicher, dass Du With-Anweisungen korrekt verwendest, wie im folgenden Beispiel:

    With Sheets("Daten")
       lngSumme = Application.Sum(.Range(.Cells(1, 20), .Cells(CLng(strZeile), 20)))
    End With
  • Falsche Blattnamen: Überprüfe, ob der Blattname, den Du verwendest, genau mit dem in Excel übereinstimmt.


Alternative Methoden

  • Du kannst die Funktion SUMME direkt in einer Zelle verwenden, um die Summe zu berechnen, ohne VBA zu nutzen. Zum Beispiel:

    =SUMME(Daten!T1:T100)
  • Eine weitere Möglichkeit ist die Verwendung von Array-Formeln. Diese können jedoch komplex sein und sind in der Regel nicht die erste Wahl für einfache Summen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die Summe aus einem Bereich in Excel VBA berechnen kannst:

  1. Summe eines festen Bereichs:

    Dim lngSumme As Double
    lngSumme = Application.Sum(Sheets("Daten").Range("T1:T10"))
    MsgBox "Die Summe beträgt: " & lngSumme
  2. Summe eines dynamischen Bereichs:

    Dim strZeile As Long
    strZeile = 10 ' Beispielwert
    lngSumme = Application.Sum(Sheets("Daten").Range("T1:T" & strZeile))
    MsgBox "Die Summe beträgt: " & lngSumme

Tipps für Profis

  • Verwende Long statt Integer für größere Zahlen, um Überläufe zu vermeiden.
  • Nutze Option Explicit am Anfang Deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind.
  • Teste Deinen Code Schritt für Schritt, um sicherzugehen, dass jeder Teil korrekt funktioniert. Debugging ist der Schlüssel zur Fehlerbehebung in VBA.

FAQ: Häufige Fragen

1. Wie kann ich einen Bereich dynamisch anpassen? Du kannst die letzte Zeile des Bereichs dynamisch ermitteln, indem Du die Methode End(xlUp) verwendest, wie im obigen Code gezeigt.

2. Welche Excel-Version benötige ich für VBA? VBA ist in allen aktuellen Excel-Versionen verfügbar, einschließlich Excel 2010 und neuer. Stelle sicher, dass Du die Entwicklertools aktivierst, um auf den VBA-Editor zugreifen zu können.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige