Microsoft Excel

Herbers Excel/VBA-Archiv

Formeln mit Makro eintragen | Herbers Excel-Forum


Betrifft: Formeln mit Makro eintragen von: WalterK
Geschrieben am: 21.11.2009 20:00:58

Hallo,

in der Recherche habe ich eine Möglichkeit gefunden, Formeln mittels eines Makros in bestimmte Zellen eintragen zu lassen.

Hier der Code mit den Formeln:

Sub test()
Sheets("Ankündigungsschreiben").Range("A9").Select
Selection.FormulaR1C1 = "=WENN(ODER(ISTFEHLER(T12);T12<=2;Hilfstabelle!$C$1=0);"" _
DIENSTGEBERNAME EINGEBEN"";WENN(INDEX(Hilfstabelle!$H:$H;VERGLEICH(INDIREKT(""Hilfstabelle!A""&$T$12);Mannschaft;0))="";"";INDEX(Hilfstabelle!$H:$H;VERGLEICH(INDIREKT(""Hilfstabelle!A""&$T$12);Mannschaft;0))))"
Sheets("Ankündigungsschreiben").Range("P6").Select
Selection.FormulaR1C1 = "=TODAY()"
End Sub
Allerdings kommt bei der Zeile mit der langen Formel der Debugger und meldet: Laufzeitfehler 1004: Anwendungs- oder objekdefinierter Fehler

Mache ich etwas falsch? Gibt es eine bessere Methode? Für mich als VBA-Laie wäre es natürlich gut, wenn die Formeln im Makro "normal" geschrieben sind.

Servus, Walter

  

Betrifft: AW: Formeln mit Makro eintragen von: Josef Ehrensberger
Geschrieben am: 21.11.2009 20:08:08

Hallo Walter,

wenn du die Formel auf deutsch eintragen willst' musst du .FormulaLocal verwenden und die "" musst du verdoppeln """".

Und du brauchst eine Zelle nicht selektieren um eine Formel einzutragen.

Sub test()
  Sheets("Ankündigungsschreiben").Range("A9").FormulaLocal = _
    "=WENN(ODER(ISTFEHLER(T12);T12<=2;Hilfstabelle!$C$1=0);""DIENSTGEBERNAME EINGEBEN"";WENN(INDEX(Hilfstabelle!$H:$H;VERGLEICH(INDIREKT(""Hilfstabelle!A""&$T$12);Mannschaft;0))="""";"""";INDEX(Hilfstabelle!$H:$H;VERGLEICH(INDIREKT(""Hilfstabelle!A""&$T$12);Mannschaft;0))))"
  Sheets("Ankündigungsschreiben").Range("P6").Formula = "=TODAY()"
End Sub



Gruß Sepp



  

Betrifft: Danke Sepp, passt! Servus, Walter von: WalterK
Geschrieben am: 21.11.2009 20:11:07




  

Betrifft: AW: Formeln mit Makro eintragen von: Daniel
Geschrieben am: 21.11.2009 20:18:51

HI
- Wenn du FormulaR1C1 verwendest, muss die Formel im Code in internationaler schreibweise angegeben werden, dh englische Formeln, Komma als Trennzeichen und Punkt als Dezimalzeichen

- Wegen dem Zusatz R1C1 müssen die Zellbezüge in der R1C1-Schreibweise eingegeben werden (deutsch Z1S1), dh nicht $A$1, sondern R1C1, Relative Zellbezüge dann so: R[1]C[1]

- wenn du im Makro eine Zeichenfolge angibst und diese Zeichenfolge soll ein Anführungszeichen enthalten, dann muss dieses Anführungszeichen verdoppelt werden, damit Excel dieses Anführungszeichen von demjenigen unterscheiden kann, daß den String beendet.

diese Prinzipien hast du in deinem Code manchmal, aber eben nicht immer angewendet.

ich würde das ganze einfach so machen:
1. die Formel vollständig und funktionsfähig von Hand in die Zelle A9 eintragen
2. im direktfenster im VBA-Editor diesen Befehl eintippen: ?Range("A9").FormulaR1C1
3. das Ergebnis in den Code kopieren
4. die Anführungszeichen doppeln (geht. z.B. mit der ERSETZEN-Funktion des Editors, hierbei auf die Einstellung "Markierten Text" achten, diese wird nicht automatisch angewählt

Gruß, Daniel

ps. Schritt 2 und 4 kannst du auch zusammenfassen, indem du im Direktfenster den Befehl:
?Replace(Range("a9").FormulaR1C1, """", """""")
eintippst.


  

Betrifft: Besten Dank für Deine Ausführungen, Walter von: WalterK
Geschrieben am: 21.11.2009 21:16:26




Beiträge aus den Excel-Beispielen zum Thema "Formeln mit Makro eintragen"