Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

IF(and()) in VBA bzw. als Makro





Frage

Hallo Miteinander! Ich möchte über eine Wenn-Dann-Formel ID's erstellen lassen. Hier die funktionierende Excel-Formel: =WENN(UND(F4<>"";G4="";H4="";I4="");C4&" "&D4&" "&F4;WENN(UND(F4="";G4<>"";H4="";I4="");C4&" "&D4&" "&G4;WENN(UND(F4="";G4="";H4<>"";I4="");C4&" "&D4&" "&H4;WENN(UND(F4="";G4="";H4="";I4<>"");C4&" "&D4&" "&I4;"")))) Als Makro aufzuzeichnen geht nicht, da erscheint der Fehler "Kann nicht aufzeichnen" Von Hand ins Makro eingepflegt sieht's so aus: rannge("A4").Select ActiveCell.FormulaR1C1 = "=IF(AND(RC[5]<>"""";RC[6]="""";RC[7]="""";RC[8]="""");RC[2]&""""&RC[3]&""""&RC[5];IF(AND(RC[5]="""";RC[6]<>"""";RC[7]="""";RC[8]="""");RC[2]&""""&RC[3]&""""&RC[6];IF(AND(RC[5]="""";RC[6]="""";RC[7]<>"""";RC[8]="""");RC[2]&""""&RC[3]&""""&RC[7];IF(AND(RC[5]="""";RC[6]="""";RC[7]="""";RC[8]<>"""");RC[2]&""""&RC[3]&""""&RC[8];""""))))))))" Range(Cells(4, 1), Cells(i - 1, 1)).Select ActiveSheet.Paste Sieht toll aus funktioniert allerdings nicht, generiert nur einen Laufzeitfehler'1004' Anwendungs- oder Objektbezogener Fehler! Warum? Danke schon mal für Eure Hilfe Markus

Antwort 1 von meinTipp

Hallo Markus,

ich habe die Formel nicht nachvollzogen. Auf den erster Blick fallen mir die Semikolon in der Makroformel auf.
Ersetze sie durch ein Komma.

Gruss Rolf

Antwort 2 von coros

Hallo Markus,

so ganz verstehe ich nicht, was Du möchtest. Wenn es Dir darum geht, die Formel via Makro in Zelle A4 einzufügen, so kannst Du das mit nachfolgendem Makro realisieren. Kopiere das Makro in ein StandardModul und starte es über z.B. eine Befehlsschaltfläche.

Option Explicit

Sub Formel_einfügen()
Range("A4").FormulaLocal = "=WENN(UND(F4<>"""";G4="""";H4="""";I4="""");C4&"" ""&D4&"" ""&F4;WENN(UND(F4="""";G4<>"""";H4="""";I4="""");C4&"" ""&D4&"" ""&G4;WENN(UND(F4="""";G4="""";H4<>"""";I4="""");C4&"" ""&D4&"" ""&H4;WENN(UND(F4="""";G4="""";H4="""";I4<>"""");C4&"" ""&D4&"" ""&I4;""""))))"
End Sub


Wie Du siehst, kann man Deine Formel auch im Klartext in ein Makro einbauen um diese dann an eine Zelle zu übertragen. Dazu muss aber die FormularLokal-Eigenschaft verwendet werden. Dann ist noch zu beachten, dass man um in der Formel zwei Anführungszeichen anzuzeigen/ einzufügen, in VBA 4 mal diese Anführungszeichen ( """") angeben muss. Das hat den Grund, dass bei VBA durch die Zeichen ein Textanfang und das Textende eingeleitet wird. Daher also 4 mal die Anführungszeichen.

Ich hoffe, Du kommst klar. Bei Fragen melde Dich bitte.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.]

Antwort 3 von coros

Hallo Rolf,

der Tipp ist nicht richtig. Wenn Du Dir den Code mal genauer ansiehst, soll hier die Formel an eine Zelle übergeben (ActiveCell.FormulaR1C1) und nicht in VBA ein Wert anhand der Formel errechnet werden. Wenn man in VBA rechnen wollte, müssten die Semikolons durch Komma ersetzt werden. Da hier aber eine Formel übergeben werden soll, müssen die Semikolons bleiben.

@ Markus: Hatte ich noch vergessen in meiner Antwort: Wenn Du nicht wissen solltest, wie Du den Code in Deine Datei bekommst, dann schau mal auf meiner HP in der Rubrik Anleitungen und dort dann in der Anleitungsnummer 3 nach. Dort stelle ich dazu eine bebilderte Anleitung zur Verfügung, die Dir sicherlich helfen wird.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 4 von Markus76

Hallo Miteinander!

Erst mal herzlichen Dank an alle, dass Ihr Euch die Mühe gemacht habt Euch meinem Problem anzunehmen.
@ Rolf:

Danke mit dem Tipp, dass man in VBA/Makro Kommas statt Semikolons benutzt wenn man innerhalb VBA rechnen will.

@Oliver:

Herzlichen Dank die Formel läuft, auch Deine Erläuterungen wie VBA/Makro in diesem speziellen Fall tickt; "aller erste Sahne"!
Machst Du das Hauptberuflich?

Endlich konnte ich mein Projekt abschliessen, zwei ergebnisse vollautomatisch vergleichen zu lassen. Das endgültige Makro zieht sich über 8 DinA4 Seiten wenn man es in Word kopiert!

Grüsse
Markus

Antwort 5 von coros

Hallo Markus,

freut mich, dass Dir geholfen wurde.

Nein, Haupberuflich mache ich das nicht, aber Nebenberuflich. Wobei ich Hauptberuflich mit Visual Basic zu tun habe und das ist ähnlich dem VBA (Visual Basic for Application). VBA ist eine abgespeckte Variante von Visual Basic eben nur für Microsoft Anwendungen wie Word oder Excel usw.

MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein
Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.

Antwort 6 von meinTipp

Hallo ,
es freut mich natürlich auch, dass eine Lösung gefunden wurde.
Noch ein kleiner Nachtrag zu der Problematik.
Die erste von Markus dargestellte Formel (Formeleintrag) war mit der R1C1 Methode und in der üblichen Makrosprache (englisch, fast immer Voreinstellung) beschrieben.
Excel versucht jetzt diese Formel in die Benutzersprache zu Übersetzen (meistens deutsch) und einzutragen.
Dort erzeugt das Semikolon den Laufzeitfehler "1004", da dort ein Komma erwartet wird.
Dein Formeleintrag Oliver, benutzt die Formulalocal schreibweise. Dort werden deutsche Ausdrücke wie WENN und "UND" für IF und "AND" erwartet. Und auch die dazugehörigen Semikolons.
Nur so als Nachtrag zum besseren Verständnisses des genannten Laufzeitfehlers.

Antwort 7 von meinTipp

Beispiel für die Trennzeichen Komma und Semikolon
Range("B2").FormulaLocal = "=Wenn(A2="""";""leer"";""nicht leer"")"
Range("B3").Formula = "=IF(A3="""",""leer"",""nicht leer"")"

Gruss Rolf

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: