Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA aufgezeichnete If-Formel geht nicht

VBA aufgezeichnete If-Formel geht nicht
08.01.2016 11:22:06
Denise
Hallo,
ich fange gerade an, mich mit dem Makro erstellen auseinander zu setzen, bin also ein totaler VBA Neuling (verstehen geht einigermaßen, selbst machen nur mit Hilfe des Rekorders). Außerdem ist das mein erster eigener Post in einem Forum, ich hoffe also es ist alles gut verständlich für euch.
Ich habe das Problem, dass ich eine Formel, die normal in Excel einwandfrei arbeitet, in einem Makro benötigt. Ich habe sie also aufgezeichnet. Nur leider weigert sich mein Makro diese auch auszuführen.
So sieht die Formel aus, wenn ich sie einfach in die Excel Zelle schreibe:
=WENN(Steuerungsseite!$C$4=1;U3*12;WENN(Steuerungsseite!$C$4=2;U3+((12-Steuerungsseite!$C$4)*J3); WENN(Steuerungsseite!$C$4=3;U3+((12-Steuerungsseite!$C$4)*K3);WENN(Steuerungsseite!$C$4=4; U3+((12-Steuerungsseite!$C$4)*L3);WENN(Steuerungsseite!$C$4=5;U3+((12-Steuerungsseite!$C$4)*M3); WENN(Steuerungsseite!$C$4=6;U3+((12-Steuerungsseite!$C$4)*N3);WENN(Steuerungsseite!$C$4=7; U3+((12-Steuerungsseite!$C$4)*O3);WENN(Steuerungsseite!$C$4=8;U3+((12-Steuerungsseite!$C$4)*P3); WENN(Steuerungsseite!$C$4=9;U3+((12-Steuerungsseite!$C$4)*Q3);WENN(Steuerungsseite!$C$4=10; U3+((12-Steuerungsseite!$C$4)*R3);WENN(Steuerungsseite!$C$4=11;U3+((12-Steuerungsseite!$C$4)*S3); WENN(Steuerungsseite!$C$4=12;U3))))))))))))
Geht bestimmt noch eleganter, aber funktioniert wie sie soll. Leider benötige ich sie in einem Tabellenblatt, dass erst durch das Makro generiert wird.
Mit dem Makrorekorder aufgezeichnet, sieht das ganze dann so aus:
Range("V2").Select
ActiveCell.FormulaR1C1 = _
"=IF(Steuerungsseite!R4C3=1,RC[-1]*12,IF(Steuerungsseite!R4C3=2,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-12]),IF(Steuerungsseite!R4C3=3,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-11]),IF(Steuerungsseite!R4C3=4,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-10]),IF(Steuerungsseite!R4C3=5,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-9]),IF(Steuerungsseite!R4C3=6,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-8]),IF(Steuerungsseite!R4C3=7,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-7]),IF(Steuerungsseite!R4C3=8,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-6]),IF(Steuerungsseite!R4C3=9,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-5]),IF(Steuerungsseite!R4C3=10,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-4]),IF(Steuerungsseite!R4C3=11,RC[-1]+((12-Steuerungsseite!R4C3)*RC[-3]),IF(Steuerungsseite!R4C3=12;RC[-1]))))))))))))"
Die vom Rekorder eingebauten Zeilenumbrüche habe ich schon raus genommen und die jeweils 8 dadurch verschwunden Zeichen wieder eingefügt. Aber scheinbar ist irgendwo noch was falsch und ich finde es einfach nicht.
Es kommt immer diese Fehlermeldung: Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler
Ich würde mich sehr freuen, wenn mir jemand helfen könnte.
Grüße
Denise

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA aufgezeichnete If-Formel geht nicht
08.01.2016 12:03:39
otto
Hi,
wenn das so aussieht fehlen 10(20) Zeichen. Jeweis ein Leerzeichen und ein Unterstrich am Ende jeder Zeile.
Wenn alles hinterein ander in einer Zeile steht, dann müsste es so funktionieren.
otto

AW: VBA aufgezeichnete If-Formel geht nicht
08.01.2016 13:41:51
Denise
Hallo Otto,
vielen Dank fürs Kontrollieren.
Es steht tatsächlich alles hintereinander in einer Zeile. Die Umbrüche hier sind automatisch beim Einfügen in die Fragebox hier entstanden. Fällt dir evtl. noch etwas ein, das falsch sein könnte?
Grüße
Denise

AW: VBA aufgezeichnete If-Formel geht nicht
08.01.2016 12:21:49
Rudi
Hallo,
erst mal verkürzen:
=WENN(Steuerungsseite!$C$4=1;U3*12;WENN(Steuerungsseite!$C$4=12;U3;U3+(12*index(3:3;; Steuerungsseite!$C$4+8))))
Gruß
Rudi

Anzeige
AW: VBA aufgezeichnete If-Formel geht nicht
08.01.2016 13:35:02
Denise
Hallo Rudi,
als erstes mal vielen lieben Dank für die schnelle Antwort.
ich habe die Formel gerade getestet, damit kommt aber leider nicht mehr das richtige Ergebnis raus.
Ich versuche mal zu erklären, was diese Formel tut:
Ich habe das Tabellenblatt "Steuerungsseite" auf diesem kann ein Monat ausgewählt werden. Diesen lasse ich als Zahl nochmal in der danebenliegenden Zelle (C4) anzeigen (also Januar = 1, Februar = 2 usw.).
Dann habe ich das Tabellenblatt "Bericht aktuell". Auf diesem finden alle Rechnungen statt. Unter anderem auch die Anzeige der Einzelwerte von Januar (Spalte I) bis Dezember (Spalte Spalte T). In Spalte U ist die Summe von I - T (also der aktuelle Jahreswert). Die Formel soll nun in Spalte V den aktuellen Jahreswert auf einen vorraussichtlichen Jahreswert hochrechnen, indem es den aktuellen Jahreswert nimmt und um so viele Monate mit dem aktuellen Monatswert addiert, die das Jahr noch hat.
Als Beispiel:
Wenn im aktuellen Monat (hier mal November) ein Wert von 10 steht und ein summierter Jahreswert von 600 besteht, somit bleibt noch 1 Monat im Jahr übrig. Das korrekte Ergebnis wäre: 600 + 1 * 10 = 610
Da ich mit Index noch nicht gearbeitet habe, weiß ich jetzt leider auch nicht, wo das Problem ist. Ich kann dir also leider nur sagen, dass bei meinem Beispiel mit deiner Formel 720 statt 610 raus kommt.
Ich hoffe dir sagt das mehr als mir :).
Grüße
Denise

Anzeige
AW: VBA aufgezeichnete If-Formel geht nicht
11.01.2016 10:49:34
Denise
Hallo,
ich hab grade einen Weg gefunden die Formel im Code genauso wie direkt im Tabellenblatt zu schreiben:
Formel = "=WENN(Steuerungsseite!$C$4=1;u2*12;WENN(Steuerungsseite!$C$4=2;u2+((12- _
Steuerungsseite!$C$4)*J2);WENN(Steuerungsseite!$C$4=3;u2+((12-Steuerungsseite!$C$4)*K2);WENN(Steuerungsseite!$C$4=4;u2+((12-Steuerungsseite!$C$4)*L2);WENN(Steuerungsseite!$C$4=5;u2+((12-Steuerungsseite!$C$4)*M2);WENN(Steuerungsseite!$C$4=6;u2+((12-Steuerungsseite!$C$4)*N2);WENN(Steuerungsseite!$C$4=7;u2+((12-Steuerungsseite!$C$4)*O2);WENN(Steuerungsseite!$C$4=8;u2+((12-Steuerungsseite!$C$4)*P2);WENN(Steuerungsseite!$C$4=9;u2+((12-Steuerungsseite!$C$4)*Q2);WENN(Steuerungsseite!$C$4=10;u2+((12-Steuerungsseite!$C$4)*R2);WENN(Steuerungsseite!$C$4=11;u2+((12-Steuerungsseite!$C$4)*S2);WENN(Steuerungsseite!$C$4=12;u2))))))))))))"
Range("v2").Select
ActiveCell.FormulaLocal = Formel
Range("v2").AutoFill Destination:=Range("v2:v" & letzteZeile), Type:=xlFillDefault

Geht bestimmt auch eleganter, aber so funktioniert es wenigstens wie es soll.
Vielen Dank nochmal an Otto und Rudi für die Mühe.
Grüße
Denise
Anzeige

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige