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