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.