Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

FormulaR1C1 - Formel wird nicht korrekt eingetr.

FormulaR1C1 - Formel wird nicht korrekt eingetr.
Peter
Guten Tag
Mit nachfolgendem Code trage ich in einem Spaltenbereich eine Formel ein und wandle dann die Formelergebnisse in Werte um. Das klappt in aller Regel auch. Zwischendurch werden jedoch in den Zellen die Formeln (in englischer Sprache) eingetragen (ohne = Zeichen vornean).
Kann mir jemand sagen, an was das liegt und wie man das ausschliessen kann?
Danke Peter
Sub AbDate()
Call CHECK
Dim rDestin As Excel.Range, cPos As Long, strcPos As String, xPos As Long
Set rDestin = Range(Cells([zeStart].Row, [spAbDate].Column), Cells([zeend].Row, [spAbDate]. _
Column))
cPos = rDestin.Column: strcPos = spBuchstabe(cPos)
xPos = [SpName] - cPos
With rDestin
.FormulaR1C1 = "=IF(VLOOKUP(RC[" & xPos & _
"],DMinusDaten,MATCH(xxDate,DMinusDate),0) = 0,"""",VLOOKUP(RC[" & xPos & _
"],DMinusDaten,MATCH(xxDate,DMinusDate),0))"
.NumberFormat = "DD.MM.YYYY"
If [FORMELN]  "JA" Then
.Value = .Value
End If
End With
valKill:
Set rDestin = Nothing
End Sub

Das dürfte ganz allein vom Zahlenwert in xPos...
30.12.2010 18:17:27
Luc:-?
…und der (Nicht-)Existenz der in der Fml verwendeten Namen abhängen, Peter,
evtl aber auch vom (fehlenden) 3.Argument von MATCH…
Bei Unstimmigkeiten wird die Fml als gewöhnl Text betrachtet und deshalb wohl führendes = entfernt.
GRutsch! Luc :-?
AW: Das dürfte ganz allein vom Zahlenwert in xPos...
30.12.2010 22:09:14
Peter
Hallo Luc
Danke für die Antwort.
Dieses Vorkommnis ist wirklich eigenartig, da:
1. der Code bei .Value = .Value stoppt
2. sofort ersichtlich ist, dass die Formel nicht korrekt ausgewertet wurde und daher ein englischer Schnippsel in den Zellen steckt
3. wenn debuggen angewählt wird, kann die gelbe Markierung ein ein paar Zeilen nach oben verschoben werden und run angewählt werden
4. jetzt wird die Formel problemlos eingetragen (bei unveränderten Variablen)
Läuft der Code zu schnell ab, dass die Formel nicht ordentlich eingetragen werden kann?
Vielleicht hat noch sonst jemand eine Idee.
So oder so - allen einen guten Rutsch
Gruss, Peter
With rDestin
.FormulaR1C1 = "=IF(VLOOKUP(RC[" & xPos & _
"],DMinusDaten,MATCH(xxDate,DMinusDate),0) = 0,"""",VLOOKUP(RC[" & xPos & _
"],DMinusDaten,MATCH(xxDate,DMinusDate),0))"
.NumberFormat = "DD.MM.YYYY"
If [FORMELN] "JA" Then
.Value = .Value
End If
Anzeige
Eijeijei, hatte ich nicht drauf geachtet,...
31.12.2010 02:29:07
Luc:-?
…Peter,
1. .Value = .Value ist natürlich Käse, wenn in der Zelle 'ne Fml steht, die durch ihr Ergebnis ersetzt wdn soll. In diesen Fällen kann .Value nicht ersetzt wdn, das ergibt sich ja aus der Fml! Du musst natürl die Fml ersetzen!
3. Das ist immer so bei Stop!
Zu schnell? Möglicherweise, wg 2. Das kann natürl nur bei Automatik-Berechnungsmodus fktn und das Pgm wartet nicht auf XL. Besser ist wahrscheinl, du trennst beides und verwendest für das Ersetzen durch Zellwert die Ereignisproz …_Calculate. Das hier verarbeitete Ereignis tritt erst nach Abschluss aller Berechnungen ein.
Gruß Luc :-?
Anzeige
AW: Eijeijei, hatte ich nicht drauf geachtet,...
31.12.2010 09:59:29
Peter
Hallo Luc
Danke für die Antwort zu später Stunde.
Nicht ganz verstanden habe ich:
"Besser ist wahrscheinl, du trennst beides und verwendest für das Ersetzen durch Zellwert die Ereignisproz …_Calculate."
Im jetzigen Code setze ich ja die Formel ein und ersetze dann diese mit dem berechneten Wert. Wie müsste ich das trennen um dann das gleiche Ergebnis zu haben?
Ich will zwingend über eine Variable (hier. FORMELN] steuern können, ob die Formel bleibt oder diese durch den Wert ersetzt wird.
Gruss, Peter
Lies bitte unter Ereignisse in der VBE-Hilfe...
31.12.2010 12:23:29
Luc:-?
…nach, Peter!
Du musst nach dem Fml-Eintragen xl Zeit zum Berechnen geben, also erst nur alle Fmln eintragen. Das Ersetzen durch das FmlErgebnis folgt dann anschließend. Evtl hilft eine Wartezeit mit Application.Wait, besser ist aber, hierfür das Worksheet_Calculate-Ereignis zu nutzen. Da musst du den ganzen infrage kommenden Bereich nochmal durchgehen und das Ersetzen durchführen.
Übrigens kannst du den Rechenmodus dann während des Fmleintrags auf xlCalculationManual setzen, geht schneller, dann wieder auf xlCalculationAutomatic zurück → dann erst wird berechnet und danach erst das Ereignis ausgelöst und die zugehörige Prozedur abgearbeitet, in der du die Fmln durch die Werte ersetzt.
GRutsch, Luc :-?
Anzeige
AW: FormulaR1C1 - Formel wird nicht korrekt eingetr.
31.12.2010 13:37:47
Gerd
Hallo Peter,
lade eine Beispieldatei mit lauffähigem "Umfeld" hoch. Dann muss Luc nicht im Nebel stochern.
Gruß Gerd
GuRutsch, Gerd! ;-) owT
31.12.2010 15:26:32
Luc:-?
:-?
AW: dto., Luc! ;-) owT
31.12.2010 16:40:21
Gerd
Gerd
AW: FormulaR1C1 - Formel wird nicht korrekt eingetr.
03.01.2011 14:36:25
Peter
Hallo Luc und alle
Auf Anraten von Gerd habe ich ein Extrakt von meinem Problemfile erstellt.
Wie in Tabelle "1231" ersichtlich, trägt mir der VBA-Code gelegentlich (selten, aber es kommt immer wieder vor) Codeschnippsel anstelle einer richtigen Formel ein.
Mir ist nicht klar, woran das liegt und wie ich das umgehen kann. In Tabelle "1231" kann ich in Zelle F1 auswählen, ob die Formel dann in Werte umgewandelt werden soll oder nicht.
Es wäre super, wenn ich eine konkrete Hilfestellung erhalten könnte, wie der Code lauten muss, damit ich dieses Formel-Umwandlungsproblem aus der Welt schaffen kann.
Danke und beste Grüsse, Peter
https://www.herber.de/bbs/user/72890.xls
Anzeige
AW: FormulaR1C1 - Formel wird nicht korrekt eingetr.
04.01.2011 02:06:58
fcs
Hallo Peter,
die Zellen in Spalte C waren zum Teil als "Text" formatiert.
Das macht Probleme beim Eintragen von Formeln. Deshalb erst Zellen als Datum formatieren, dann Formeln eintragen.
Außerdem sollte der Zellbereich neu berechnet werden vor dem Ersetzen der Zellinhalte durch ihre Werte.
Gruß
Franz
Sub Zuschlag_Date()
Dim rDestin As Excel.Range, cPos As Long, strcPos As String, xPos As Long
Set rDestin = Range(Cells([zeStart].Row, [spxDa].Column), Cells([zeend].Row, [spxDa].Column))
cPos = rDestin.Column
xPos = [SpxNa].Column - cPos
With rDestin
.NumberFormat = "DD.MM.YYYY"
.FormulaR1C1 = "=IF(VLOOKUP(RC[" & xPos & _
"],DPlusDaten,MATCH(NavDate,DPlusDate),0) = 0,"""",VLOOKUP(RC[" & xPos & _
"],DPlusDaten,MATCH(NavDate,DPlusDate),0))"
.Calculate
If [FORMELN]  "JA" Then
.Value = .Value
End If
End With
valKill:
Set rDestin = Nothing
End Sub

Anzeige
AW: FormulaR1C1 - Formel wird nicht korrekt eingetr.
04.01.2011 08:13:07
Peter
Hallo Franz
Vielen Dank für die Antwort mit dem konkreten Anpassungvorschlag. Die Textformate waren wohl drin, weil ich versucht habe, das Problem nachzubauen. Doch grundsätzlich die Zellen zuerst zu formatieren, ist sicher besser; Berechnen habe ich nun auch integriert.
Gruss, Peter

322 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige