ich benötige eure Hilfe. Wie muss diese Formel in VBA geschrieben werden?
=WENN(L9=0;"";SUMMEWENN(G9:G17;L9;H9:H17))
Gruss Andre
Sub test()
Dim dblSumme As Double
If Range("L9") = 0 Then
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), Range("L9"), Range("H9:H17"))
End If
End Sub
Gruß Ingolf
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), ">" & Range("L9"), Range("H9:H17"))
Vorausgesetzt, es soll alles größer 0 summiert werden. Oder noch einfacher ohne Bezugszelle:
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), ">0", Range("H9:H17"))
Der Laufzeitfehler tritt wahrscheinlich auf, weil der Code nicht im Modul des Tabellenblattes steht. Dadurch beziehen sich die Range-Angaben auf das aktive Tabellenblatt. Nach dem Klicken des CommandButtons ist aber nicht das Tabellenblatt aktiv, sondern der CommandButton. Das kannst du abstellen, indem du die Eigenschaft "TakeFocusOnClick" des CommandButtons auf "False" stellst. Zu den Eigenschaften des CommandButtons gelangst du, indem du in der Symbolleiste "Steuerelement-Toolbox" über das Symbol ganz links den Entwurfsmodus einstellst. Im Entwurfsmodus bekommst du bei einem Rechtsklick auf den CommandButton ein Kontextmenü mit dem Auswahlpunkt "Eigenschaften". Nicht vergessen, den Entwurfsmodus wieder abzuschalten. Nun müsste der Code auch funktionieren, ohne dass du die Range-Angaben ausführlich über Workbook und Worksheet machen musst.
Gruß Ingolf
Sub test()
Dim dblSumme As Double
If Range("L9") "" Then
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), Range("L9"), Range("H9:H17"))
End If
End Sub
Gruß Ingolf
Um eine Excel-Formel wie =WENN(L9=0;"";SUMMEWENN(G9:G17;L9;H9:H17))
in VBA zu übersetzen, folge diesen Schritten:
Öffne den VBA-Editor in Excel (Alt + F11).
Füge ein neues Modul hinzu (Rechtsklick auf "VBAProject" > Einfügen > Modul).
Schreibe den folgenden Code:
Sub FormelUmschreiben()
Dim dblSumme As Double
If Range("L9") <> "" Then
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), Range("L9"), Range("H9:H17"))
Range("M9") = dblSumme
End If
End Sub
Schließe den VBA-Editor und teste das Makro, indem du einen Command-Button zu deinem Arbeitsblatt hinzufügst und das Makro mit diesem Button verknüpfst.
Laufzeitfehler 13 (Typen unverträglich): Dieser Fehler kann auftreten, wenn sich die Range-Angaben nicht auf das aktive Blatt beziehen. Stelle sicher, dass dein Makro im richtigen Modul gespeichert ist und die Referenzen korrekt sind.
Fehler bei der Verwendung von If Range("L9") = 0 Then
: Dies muss geändert werden in If Range("L9") <> "" Then
, um sicherzustellen, dass die Zelle nicht leer ist.
Makro funktioniert nicht wie erwartet: Überprüfe die Eigenschaft TakeFocusOnClick
des Command-Buttons, um sicherzustellen, dass der Code nicht unterbrochen wird.
Excel Formel zum Übersetzen: Du kannst auch direkt die Excel-Formel in die Zelle schreiben, anstatt sie in VBA zu verwenden. Dies ist besonders nützlich, wenn du nur eine einfache Berechnung benötigst und keine komplexe Logik erforderlich ist.
Excel VBA Translate Formula Language: Verwende die Evaluate
-Methode, um Excel-Formeln direkt in VBA zu nutzen, z.B. Range("M9").Value = Application.Evaluate("=WENN(L9=0;"""";SUMMEWENN(G9:G17;L9;H9:H17))")
.
Hier ist ein Beispiel, wie du eine Excel-Formel in VBA nutzen kannst:
Sub Beispiel()
Dim dblSumme As Double
If Range("L9") <> "" Then
dblSumme = WorksheetFunction.SumIf(Range("G9:G17"), Range("L9"), Range("H9:H17"))
Range("M9").Value = dblSumme
End If
End Sub
In diesem Beispiel wird die Menge in einer Spalte automatisch übersetzt, indem die Formel in VBA verwendet wird.
Nutze den Makrorecorder, um dir erste Ansätze für deine VBA-Codes zu generieren. Du kannst dann den Code anpassen, um ihn effizienter zu gestalten.
Wenn du häufig Formeln in VBA verwendest, erstelle eine Sammlung von Funktionen, die du einfach wiederverwenden kannst. So kannst du Zeit sparen und deine Codes sauberer halten.
Überlege, wie du deine Excel-Formeln in VBA optimieren kannst, um die Berechnungen zu beschleunigen, insbesondere bei großen Datenmengen.
1. Wie kann ich eine Excel-Formel automatisch übersetzen?
Du kannst die Formel in den VBA-Editor eingeben und die WorksheetFunction
-Objekte nutzen, um Excel-Funktionen direkt in deinem VBA-Code zu verwenden.
2. Was ist der Unterschied zwischen einer Excel-Formel und einer VBA-Funktion?
Eine Excel-Formel wird direkt in eine Zelle eingegeben, während eine VBA-Funktion in einem Makro ausgeführt wird und oft komplexere Logik oder Automatisierung ermöglicht.
3. Wie kann ich mehrere Zellen gleichzeitig in VBA bearbeiten?
Du kannst Schleifen verwenden, um durch die Zellen zu iterieren und die gewünschten Berechnungen anzuwenden.
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