online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon markus76 vom 21.02.2019, 16:22 Options

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

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 schreiben

Antwort 1 von meinTipp vom 22.02.2019, 08:37 Options

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 vom 22.02.2019, 08:52 Options

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.

[b]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[/b]


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 vom 22.02.2019, 08:57 Options

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 vom 22.02.2019, 09:46 Options

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 vom 22.02.2019, 10:00 Options

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 vom 22.02.2019, 11:02 Options

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 vom 22.02.2019, 11:27 Options

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

Ähnliche Themen

Access: Tastenkombinationen in VBA erstellen
Robsenponte  18.01.2007 - 196 Hits - 9 Antworten

Excel Makro erscheint nicht in Makroliste
H.E.N.K  01.02.2007 - 217 Hits - 1 Antwort

IF..Then Bedingung in Makro perfomanter machen
Markus76  06.03.2007 - 110 Hits - 7 Antworten

Brauche Tipps für einen individuellen VBA-Code
varginator  03.04.2008 - 117 Hits - 14 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026