Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
872to876
872to876
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel nach VBA übersetzen

Formel nach VBA übersetzen
30.05.2007 17:09:43
andre
Hallo,
ich benötige eure Hilfe. Wie muss diese Formel in VBA geschrieben werden?
=WENN(L9=0;"";SUMMEWENN(G9:G17;L9;H9:H17))
Gruss Andre

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:13:00
Hajo_Zi
Hallo Andre,
der Makrorecorder liefert da schon brauchbare Ansätze.

AW: Formel nach VBA übersetzen
30.05.2007 17:18:00
andre
Hallo,
dumme Frage, wie bekomme ich die Formel mit dem Makrorecorder aufgezeichnet?
Gruss Andre

AW: Formel nach VBA übersetzen
30.05.2007 17:30:12
Hajo_Zi
Hallo Andre,
Formel in eine Zelle schreiben, Extra, Makro, aufzeichen, die Zelle wählen und Enter.
Gruß Hajo

AW: Formel nach VBA übersetzen
30.05.2007 17:28:00
IngGi
Hallo Hajo,
liegst du da nicht falsch? Entscheidend ist doch der Begriff "WorksheetFunction". Und auf den kommst du mit dem Makrorekorder nicht. Ich laß mich natürlich gerne eines Besseren belehren.
Gruß Ingolf

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:34:00
Hajo_Zi
Hallo IngGi,
von WorksheetFunction Stand nichts im Beitrag.
"Hallo,
ich benötige eure Hilfe. Wie muss diese Formel in VBA geschrieben werden?
=WENN(L9=0;"";SUMMEWENN(G9:G17;L9;H9:H17))
Gruss Andre"
Gruß Hajo

AW: Formel nach VBA übersetzen
30.05.2007 17:40:03
IngGi
Hallo Hajo,
verstehe, wir hatten die Frage unterschiedlich interpretiert. Ist manchmal gar nicht so einfach, ein Problem exakt zu beschreiben. Oder besser gesagt, es ist manchmal gar nicht so einfach, überhaupt zu bemerken, dass ein Problem nicht exakt beschrieben ist.
Gruß Ingolf

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:47:10
Hajo_Zi
Hallo Ingolf,
jetzt sehe ich ach nicht mehr durch nach Andre seinem letzten Beitrag. Er sollte erstmal was zu Klärung schreiben. Ob nun Funktion oder Formel?
Gruß Hajo

AW: Formel nach VBA übersetzen
30.05.2007 17:54:00
andre
Hallo Hajo,
kurze Erklärung:
Ich habe hier eine Tabelle mit VBA-Code. Diese Tabelle berechnet Werte nach einem Klick auf einen Command-Button. Ich habe in dieser Tabelle die von mir genannte Formel eingefügt um eine zusätzliche Berechnung durchzuführen. Ich wollte diese Formel nun an das Ende des VBA-Codes für den Button einfügen, damit sämtliche Bearbeitungen in VBA durchgeführt werden. Darum meine Frage, wie diese Formel in VBA geschrieben wird.
Gruss Andre
PS: Wenn ich das Makro so aufzeichne, wie du vorgegeben hast steht darin nur, das ich die Zelle ausgewählt habe.

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:59:00
Hajo_Zi
Hallo Andre,
da habe ich die Frage falsch interpretiert. Da überlasse ich mal Ingolf die Frage.
Gruß Hajo

AW: Formel nach VBA übersetzen
30.05.2007 17:22:00
IngGi
Hallo Andre,
so zum Beispiel:

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

AW: Formel nach VBA übersetzen
30.05.2007 17:42:00
andre
Hallo Ingolf,
ich hab die Formel so im VB-Editor eingegeben.
Beim Test gibt es eine Fehlermeldung und auf diese Zeile zeigt ein gelber Pfeil:
If Range("L9") = 0 Then
Zu diesem Tabellenblatt gibt es schon einen VBA-Code (nicht von mir). Ich habe für eine Zusatzberechnung die Formel für eine Zelle eingegeben, würde sie aber gern in den VBA-Code einbinden. Es handelt sich um ein Makro für einen Command Button.
Gruss Andre

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:44:53
andre
Hallo Ingolf,
habe noch vergessen, die Fehlermeldung lautet:
Laufzeitfehler 13, Typen unverträglich
Gruss Andre

AW: Formel nach VBA übersetzen
30.05.2007 18:11:46
IngGi
Hallo Andre,
ich hab mir die Beiträge nochmal durchgelesen und stoße auf 2 Probleme:
1. Mir ist jetzt erst aufgefallen, dass du für die Bedingung der WENN-Funktion und für die Bedingung der SUMMEWENN-Funktion jeweils dieselbe Zelle (L9) nimmst. Die SUMMEWENN-Funktion wird dabei nur ausgeführt, wenn L9=0 ist. Aber wenn L9=0 ist, funktioniert die SUMMEWENN-Funktion so nicht. Sie muss dann lauten

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

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 18:38:00
andre
Hallo Ingolf,
ich bekomme leider immer noch diese Fehlermeldung. Vielleicht sollte ich etwas mehr ausholen.
In der Tabelle stehen in einer Spalte 10 Bezeichnungen, in der Spalte daneben steht die Mengenangabe dazu. Doppelnennungen sind möglich, darum wird per Buttonklick die Spalte mit den Bezeichnungen auf Duplikate gefiltert und alle übriggebliebenen Bezeichnungen in eine neue Spalte eingetragen.
Nun wollte ich ganz elegant die Mengenangaben dazu aufaddieren und daneben schreiben. Dazu die o.g. Formel, die im Tabellenblatt super funktioniert. Ich möchte diese Berechnung nun aber im Makro ausführen lassen. Das WENN dient nur dazu, diese Berechnung durchzuführen, wenn in der Nachbarspalte auch eine Bezeichnung steht. Also praktisch so:
Die Formel steht in Zelle M9 und heisst =WENN(L9=0;"";SUMMEWENN(G9:G17;L9;H9:H17)) In den Zellen
M10 - M18 steht dann die gleiche Formel.
Gruss Andre

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 18:50:53
IngGi
Hallo Andre,
wer lesen kann, ist klar im Vorteil. Was ich bezüglich der Zelle L9 gesagt habe, ist natürlich Quatsch. Ich nehme alles zurück und behaupte das Gegenteil. Natürlich wird die SUMMEWENN-Funktion ausgeführt, wenn L9 nicht gleich 0 ist!
Versuch's mal so:

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

AW: Formel nach VBA übersetzen
30.05.2007 19:02:00
andre
Hallo Ingolf,
ich habe den Code folgendermassen verändert:
If Range("L9") "" Then
Range("M9") = WorksheetFunction.SumIf(Range("G9:G17"), Range("L9"), Range("H9:H17"))
End If
Es funktioniert! Ich danke dir recht herzlich für deinen Support!
Gruss Andre

Anzeige
AW: Formel nach VBA übersetzen
30.05.2007 17:50:00
IngGi
Hallo Andre,
zwei Fragen dazu:
1. Steht das Makro im Modul des Tabellenblattes, auf das sich der Code bezieht? Wenn nein, musst du eventuell überall statt "Range(?)" die komplette Angabe Workbooks("Dateiname.xls").Sheets("Tabellenblattname").Range(?)" angeben.
2. Was für eine Fehlermeldung erhältst du?
Gruß Ingolf

AW: Formel nach VBA übersetzen
30.05.2007 18:01:13
andre
Hallo Ingolf,
1. ja
2. siehe vorigen Beitrag (Nachtrag)
Gruss Andre

AW: Formel nach VBA übersetzen
31.05.2007 00:06:00
Daniel
hi
was möchtest du genau machen:
1. die Formel per VBA in eine Zelle schreiben?
2. die Rechenfunktion direkt in VBA verwenden?
Gruß, Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige