ich möchte das Teilergebnis (=Teilergbnis(3;A:A) per VBA in eine Variable schreiben - also nicht als Formel in dem Blatt hinterlegen. Leider fehlt mir dazu der Befehl. Über einen Tipp wäre ich sehr dankbar.
Gruß,
Ptonka
Dim lngErgebnis As Long
lngErgebnis = ExecuteExcel4Macro("SUBTOTAL(3,'Tabelle 1'!C1)")
MsgBox lngErgebnis
Gruß TinoUm das Teilergebnis in VBA als Variable zu speichern, kannst Du die Funktion WorksheetFunction.Subtotal
oder ExecuteExcel4Macro
verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:
Öffne Excel und drücke ALT + F11
, um den VBA-Editor zu starten.
Füge ein neues Modul hinzu, indem Du mit der rechten Maustaste auf "VBAProject" klickst und "Einfügen" > "Modul" auswählst.
Kopiere den folgenden Code in das Modul:
Dim lngErgebnis As Long
lngErgebnis = ExecuteExcel4Macro("SUBTOTAL(3,'Tabelle 1'!C1)")
MsgBox lngErgebnis
oder
Dim TErgebnis As Double
TErgebnis = WorksheetFunction.Subtotal(3, Range("A:A"))
MsgBox TErgebnis
Passe den Bereich Range("A:A")
und die Tabelle nach Bedarf an.
Führe den Code aus, um das Teilergebnis anzuzeigen.
Fehler: „Objektvariable nicht gesetzt“
Lösung: Stelle sicher, dass der Bereich, den Du in Range("A:A")
angibst, korrekt ist und Daten enthält.
Fehler: „Typen unverträglich“
Lösung: Achte darauf, dass Du den richtigen Datentyp für die Variable verwendest. TErgebnis
sollte als Double
deklariert werden, wenn Du mit Dezimalzahlen arbeitest.
Neben den oben genannten Methoden gibt es auch andere Ansätze, um Teilergebnisse in VBA zu berechnen:
Verwendung von Excel-Formeln direkt in VBA: Du kannst Excel-Formeln in VBA verwenden, um das Teilergebnis in einer Zelle zu berechnen und es dann in eine Variable zu speichern.
Dim cellValue As Variant
cellValue = Evaluate("SUBTOTAL(3,A:A)")
MsgBox cellValue
Englische Version: Wenn Du mit der englischen Version von Excel arbeitest, kannst Du SUBTOTAL
anstelle von Teilergebnis
verwenden.
Hier sind einige praktische Beispiele, wie Du das Teilergebnis in VBA verwenden kannst:
Einfaches Teilergebnis:
Dim TErgebnis As Double
TErgebnis = WorksheetFunction.Subtotal(3, Range("A:A"))
MsgBox "Das Teilergebnis ist: " & TErgebnis
Teilergebnis mit spezifischem Bereich:
Dim TErgebnis As Double
TErgebnis = WorksheetFunction.Subtotal(3, Range("B2:B10"))
MsgBox "Das Teilergebnis für B2:B10 ist: " & TErgebnis
SUBTOTAL
für dynamische Bereiche, da es nur sichtbare Zellen berücksichtigt, was besonders nützlich ist, wenn Du Filter in Deinen Daten verwendest.ExecuteExcel4Macro
schneller sein als WorksheetFunction
.SUBTOTAL
in der englischen Version von Excel als SUBTOTAL
und nicht als Teilergebnis
bezeichnet wird. Achte darauf, die richtige Syntax zu verwenden.1. Wie kann ich das Teilergebnis für einen bestimmten Bereich berechnen?
Du kannst den spezifischen Bereich in der Funktion angeben, z.B. WorksheetFunction.Subtotal(3, Range("B2:B10"))
.
2. Welche Excel-Version benötige ich für diese VBA-Funktionen?
Die Funktionalität ist in den meisten modernen Excel-Versionen verfügbar, einschließlich Excel 2016 und später.
3. Was ist der Unterschied zwischen WorksheetFunction.Subtotal
und ExecuteExcel4Macro
?
WorksheetFunction.Subtotal
verwendet die VBA-Funktion direkt, während ExecuteExcel4Macro
die Excel-4-Makro-Funktion aufruft, was manchmal schneller sein kann.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen