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

...tut nicht: activecell.formula = ".."

Forumthread: ...tut nicht: activecell.formula = ".."

...tut nicht: activecell.formula = ".."
Axel
Guten Morgen Künstler!
Bin etwas am verzweifeln: ich hole mir in einem Diagramm aus einer Trendlinie die Gleichung des Polynoms und möchte diese Gleichung per Makro so umschreiben, dass sie direkt im Sheet verwendbar ist.
BEISPIEL:
3,27077E-20x6 - 4,15043E-16x5 + 2,10623E-12x4 - 5,33574E-09x3 + 6,41427E-06x2 - 6,54192E-04x + 2,91027E+01
wird per Makro zu
3,27077*10^-20*P7^6 - 4,15043*10^-16*P7^5 + 2,10623*10^-12*P7^4 - 5,33574*10^-9*P7^3 + 6,41427*10^-6*P7^2 - 6,54192*10^-4*P7 + 2,91027*10^1
Funktioniert prima, die umgeschriebene Formel steht in der richtigen Zelle. Setzte ich manuell ein "="-zeichen davor, arbeitet sie.
PROBLEM: Versuche ich die (ohne das manuel vorgesetzte "="-Zeichen) Formel per Makro hineinzusetzen (also inkl "="), die Hilfe bietet diesen Code dafür an: "Worksheets("Sheet1").Range("A1").Formula = "=$A$4+$A$10", dann gibt er den Error "Application defined or object defined error" aus.
ich hoffe, ihr habt gute vorschläge.
beste grüße,
axel

Sub Macro1()
ActiveCell.Replace What:="E", Replacement:="*10^", LookAt:=xlPart, SearchOrder:=xlByRows,   _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
ActiveCell.Replace What:="x ", Replacement:="x1", LookAt:=xlPart, SearchOrder:=xlByRows,   _
MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
x = InputBox("Zelle für x-Werte")
x = "*" & x & "^"
ActiveCell.Replace What:="x", Replacement:=x, LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:= _
_
False, SearchFormat:=False, ReplaceFormat:=False
ActiveCell.Replace What:=" ", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase: _
_
=False, SearchFormat:=False, ReplaceFormat:=False
frml = "=" & ActiveCell
'beispiel-gleichung, die er nicht schluckt, die aber unter "frml" eingelesen ist, bevor er  _
unter der letzten codezeile in error geht:
' "=3,27077*10^-20*P7^6 - 4,15043*10^-16*P7^5 + 2,10623*10^-12*P7^4 - 5,33574*10^-9*P7^3 + 6,   _
_
41427*10^-6*P7^2 - 6,54192*10^-4*P7 + 2,91027*10^1"
ActiveCell.Formula = frml
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: ...tut nicht: activecell.formula = ".."
11.09.2009 11:10:53
fcs
Hallo Axel,
verwende
  ActiveCell.FormulaLocal = frml
statt
ActiveCell.Formula = frml

zum einfügen der Formel.
Mit "ActiveCell.Formula" werden Punkt und Komma ggf. anders als Dezimal/Tausenderstelle interpretiert und Excel-VBA erwartet die englischsprachigen Bezeichnungen der Funktionen.
Der Unterschied im Hilfetext ist nicht groß
Formula (Eigenschaft)
Formula-Eigenschaft, wie sie auf das Range-Objekt angewendet wird.
Gibt die Formel des Objekts im A1-Bezugssystem entsprechend der Ländereinstellung für die Makrosprache zurück oder legt sie fest.Variant Schreib-Lese-Zugriff.
FormulaLocal-Eigenschaft
Gibt die Formel für das Objekt unter Verwendung von A1-Bezügen in der Sprache des Benutzers zurück oder legt einen Wert für sie fest. Variant-Wert mit Lese-/Schreibzugriff für Range-Objekte, String-Wert mit Lese-/Schreibzugriff für Series-Objekte.

Aber Ländereinstellung Makrosprache ist normalerweis EnglischUS, Sprache Benutzer ist bei uns in Good Old Germany meist Deutsch mit Punkt als Tausender-Trennung und Komma als Dezimalstelle. Bei den Amerikanischen Freundne ist es umgekehrt.
Und das macht hier die Probleme.
Gruß
Franz
Anzeige
ist gelöst, danke
11.09.2009 12:49:33
Axel
Franz,
danke Dir. Das war es in der Tat. Ich habe schon Stück für Stück die Formel gestrippt, bis ich den Fehler beim Komma gefunden habe. Danach hab ich mit replace von Komma durch Punkt gearbeitet. Das hat zwar funktioniert, Deine Lösung ist aber viel eleganter und auch auf anderen Rechnern kompatibel...
Gruß,
Axel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

ActiveCell.Formula in VBA: Probleme und Lösungen


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul erstellen: Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Code einfügen: Füge den folgenden VBA-Code ein, um eine Formel in die aktive Zelle einzufügen:

    Sub Macro1()
       ActiveCell.Replace What:="E", Replacement:="*10^", LookAt:=xlPart
       ActiveCell.Replace What:="x ", Replacement:="x1", LookAt:=xlPart
       x = InputBox("Zelle für x-Werte")
       x = "*" & x & "^"
       ActiveCell.Replace What:="x", Replacement:=x, LookAt:=xlPart
       ActiveCell.Replace What:=" ", Replacement:="", LookAt:=xlPart
       frml = "=" & ActiveCell
       ActiveCell.FormulaLocal = frml
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Wähle eine Zelle aus und führe das Makro aus.


Häufige Fehler und Lösungen

  • Error "Application defined or object defined error": Dieser Fehler tritt häufig auf, wenn die Formel nicht im richtigen Format eingegeben wird. Anstelle von ActiveCell.Formula = frml sollte ActiveCell.FormulaLocal = frml verwendet werden. Dies ist besonders wichtig, wenn du mit verschiedenen Ländereinstellungen arbeitest, da Formula je nach Region unterschiedlich interpretiert wird.

  • Komma vs. Punkt: Wenn du mit ActiveCell.Formula arbeitest, kann Excel die Dezimal- und Tausenderstellen falsch interpretieren. Verwende ActiveCell.FormulaLocal, um das Problem zu vermeiden.


Alternative Methoden

Eine alternative Methode zur Verwendung von ActiveCell.Formula ist die Verwendung von ActiveCell.FormulaR1C1. Diese Methode ist besonders nützlich, wenn du relative Referenzen verwenden möchtest. Beispiel:

ActiveCell.FormulaR1C1 = "=R[-1]C + R[-2]C"

Hierbei wird eine Formel erstellt, die sich auf die Zellen relativ zur aktuellen Zelle bezieht.


Praktische Beispiele

  1. Einfache Addition:

    ActiveCell.Formula = "=SUM(A1:A10)"
  2. Verwendung von Formeln mit Variablen:

    Dim x As String
    x = InputBox("Gib die Zelle ein:")
    ActiveCell.FormulaLocal = "=" & x & "^2"
  3. Formel mit ActiveCell.FormulaR1C1:

    ActiveCell.FormulaR1C1 = "=R[-1]C + R[-2]C"

Diese Beispiele helfen dir, die Funktionsweise von activecell.formula und activecell.formulaR1C1 in VBA besser zu verstehen.


Tipps für Profis

  • Achte immer darauf, die richtige Spracheinstellungen in Excel zu verwenden. Dies kann entscheidend sein, wenn du mit Formeln arbeitest, die regional unterschiedliche Formate verwenden.
  • Nutze ActiveCell.FormulaLocal, wenn du sicherstellen möchtest, dass deine Formeln unabhängig von den regionalen Einstellungen funktionieren.
  • Experimentiere mit der FormulaR1C1-Methode, um dynamische und flexible Formeln zu erstellen, die sich an unterschiedliche Datenreihen anpassen.

FAQ: Häufige Fragen

1. Warum funktioniert meine Formel nicht, wenn ich ActiveCell.Formula benutze?
Das liegt wahrscheinlich an den unterschiedlichen Ländereinstellungen. Versuche stattdessen ActiveCell.FormulaLocal.

2. Was ist der Unterschied zwischen Formula und FormulaLocal?
Formula verwendet die Spracheinstellungen für Makros, während FormulaLocal die Formel in der Sprache des Benutzers zurückgibt, was oft zu weniger Problemen führt.

3. Wie kann ich sicherstellen, dass meine Formeln in Excel korrekt interpretiert werden?
Verwende ActiveCell.FormulaLocal und achte darauf, die richtige Trennung von Dezimal- und Tausenderstellen zu verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige