Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
928to932
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
928to932
928to932
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel per Code erstellen - Sprachversion?

Formel per Code erstellen - Sprachversion?
03.12.2007 22:00:00
Josef
Hallo,
in einer nicht von mir erstellten Mappe werden in einigen Zellen Formeln per VBA-Code erstellt.
Dabei zeigt sich, dass die Formeln/Funktionen nur in der deutschen Schreibweise akzeptiert werden, die englische erzeugt den Laufzeitfehler 1004.
Also z.B .Formula="=SVERWEIS(..." und Z1S1-Schreibweise für Bezüge funktioniert, VLOOKUP bzw. R1C1 geht nicht.
Von einem anderen Projekt (neue Mappe) aus läftt der Code auch in der englischen Version.
Also vermutlich eine Einstellungssache - die mir allerdings bisher vorborgen geblieben ist ....
Hängt wohl mit der in der Hilfe zitierten "Ländereinstellung für die Makrosprache" zusammen!?
Gruß an euch Excelianer da draußen,
Josef

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel per Code erstellen - Sprachversion?
03.12.2007 22:06:00
Renee
Hi Josef,
Bei deinem Level, ist diese Anfrage aber doch etwas daneben.
Die .Formula Eigenschaft von Zellen versteht Englisch und nur Englisch.
P.S. R1C1 Notation finde ich voll daneben... nimm die 'normale' Bezugsschreibweise A1.
GreetZ Renee

AW: Formel per Code erstellen - Sprachversion?
03.12.2007 22:39:54
Josef
Hallo Renee,
deine Antwort hilft hier leider nicht weiter und trifft auch nicht zu, denn z.B. der Code
Range("E28:K28").Formula = "=SVERWEIS($D$28;ADaten;SPALTE()-3;0)" funktioniert problemlos, allerdings nur von den eigenen Mappen aus.
Ferner ist die R1C1-Notation gerade in VBA sehr nützlich, wenn man mit den Indices arbeitet. Das habe ich 'bei 'meinem Level' zumindest schon erkannt.
Mit der Bitte um qualifizierte Beiträge, die auch zur Sache was beitragen - Danke und
Gruß,
Josef

Anzeige
AW: Formel per Code erstellen - Sprachversion?
04.12.2007 11:07:46
Renee
Hi Josef,
deine Antwort hilft hier leider nicht weiter und trifft auch nicht zu
Versuch doch einfach mal alle Formeln, die du per VBA erstellst, in ENGLISCH in die .Formula Eigenschaft der Range zu schreiben. Dann schaust du mal was anschliessend in der .FormulaLocal Eigenschaft auf deinem deutschen Excel stehst. Ob du 'normale' oder 'R1C1' Schreibweise verwendest ist mir egal, das ist wie unten diskutiert Geschmacksache.
Ist diese Antwort qualifizierter ?
GreetZ Renee

AW: Formel per Code erstellen - Sprachversion?
03.12.2007 22:40:56
Daniel
Hi
mag sein, daß es geschmackssache ist, aber gerade in Makros bietet die R1C1-Schreibweise ein paar Handfeste Vorteile.
Bei der Normalen Schreibweise muss ich, wenn meine Formel relative Zellbezüge enthält, immer mit beachten, in welche Zelle ich die Formel gerade reinschreibe!
oder anders ausgedrückt, wenn ich in einer Tabelle eine Formel nach unten kopieren, dann habe ich in der "normalen" Schreibweise in jeder Zelle eine andere Formel stehen, in der R1C1-Schreibweise dagegen sind die Formeltexte alle gleich.
Zugegeben, die R1C1-Schreibweise ist etwas ungewohnt, weil man die Spaltennummern erst in Buchstaben umwandeln muss.
Wenn man mit der R1C1-Schreibweise arbeiten will, sollte man sich angewöhnen nur das relativ zu addressieren, was auch unbedingt relativ addressiert werden muss, alles andere wird absolut addressiert. Dann werden die Formeln ganauso einfach, wie in der "normalen" Schreibweise (in der man für gewöhnlich nur das absolut addressiert, was unbedingt absolut addressiert werden muss)
Gruß, Daniel

Anzeige
AW: Formel per Code erstellen - Sprachversion?
03.12.2007 22:53:00
Ramses
Hallo
Sorry,.. aber da möchte ich meinen Senf dazu geben :-)
"..daß es geschmackssache ist..."
Das ist wohl so
"..ein paar Handfeste Vorteile...."
Da such ich mir derzeit noch die Finger wund. Da sehe ich keinen einzigen
"..wenn ich in einer Tabelle eine Formel nach unten kopieren, dann habe ich in der "normalen" Schreibweise in jeder Zelle eine andere Formel stehen, in der R1C1-Schreibweise dagegen sind die Formeltexte alle gleich...."
Probier doch mal die untere Formel aus, und sag mir dann in welcher Form die Formel einfacher, und vor allem lesbarer !! zu schreiben ist,... wie unten abgebildet oder in Z1S1 Variante
Option Explicit

Sub Test_Formula1()
Range("A1:A25").Formula = "=B1"
End Sub



Sub Test_Formula2()
Range("A1:A25").Formula = "=$B$1"
End Sub


Gruss Rainer

Anzeige
AW: Formel per Code erstellen - Sprachversion?
03.12.2007 23:21:34
Daniel
Hi
also deine beiden Beispiele in R1C1

Sub Test_Formula1()
Range("A1:A25").Formula = "=RC[1]"
End Sub



Sub Test_Formula2()
Range("A1:A25").Formula = "=R2C1"
End Sub


von der Lesbarkeit her gibt sich das nicht viel, aber in R1C1-Schreibweise ist eindeutig, was gemeint ist.
in der Normalen Schreibweise kann ein Relativer Zellbezug auch ganz schnell mal zu einem Absoluten werden.
Probier mal die beiden Codes hier, dann verstehts du vielleicht, was ich meine und warum ich in Makros die R1C1-Schreibweise bevorzuge:
Aufgabe: Es soll jeweils der Wert aus der Zelle rechts daneben gelesen werden:


Sub Test_formula()
dim Formeltext as string
Formeltext = "=B1"  'ist ja ein Relative Zellbezug, weil keine Dollarzeichen drinstehen
Range("A1").formula = Formeltext
Range("A3").formula = Formeltext
Range("A5").formula = Formeltext
End Sub



Sub Test_formulaR1C1()
dim Formeltext as string
Formeltext = "=RC[1]"
Range("A1").formulaR1C1 = Formeltext
Range("A3").formulaR1C1 = Formeltext
Range("A5").formulaR1C1 = Formeltext
End Sub


Zeig mir doch mal, wie du das in der "normalen" Schreibweise "einfach" korrekt abbilden willst (die Formel könnte u.U. ja auch etwas länger sein)
Außerdem ist es mir relativ wurscht, welche Schreibweise lesbarer ist.
Ich entwickle die Formel ja nicht im Makro-Code, sondern normal in der Tabelle und bastle dann solange daran rum, bis sie mir das gewünschte Ergebnis liefert.
Wenns dann soweit ist, gehe ich einfach ins Direktfenster und lasse mir den Formel-Code mit
?Selection.FormulaR1C1
anzeigen und kopiere in nur noch ins Makro rein.
Dann noch die Anführungszeichen doppeln (in längeren Formeln auch gerne mit Suchen-Ersetzen) und fertig.
ob das Ding jetzt leicht lesbar ist oder nicht, ist mir dann auch egal.
Man kann sich das leben in der R1C1-Welt natürlich leichter machen, wenn man nur das relativ addressiert , was unbedingt relativ addressiert werden muss (also andersrum wie in der normalen Schreibweise), dann werden die Formeln auch nicht so arg komplexer.
Gruß, Daniel

Anzeige
AW: Formel per Code erstellen - Sprachversion?
03.12.2007 23:58:00
Ramses
Hallo
"...Zeig mir doch mal, wie du das in der "normalen" Schreibweise "einfach" korrekt abbilden willst.."
Einfach so :-)

Sub Test_Formula1()
Range("A1, A3, A5").Formula = "=B1"
End Sub


Tut mir leid, aber ich sehe keinen Vorteil :-)
En Umweg über "?Selection.FormulaR1C1" spare ich mir, und schreib die Formel gleich in den Code :-)
Gruss Rainer

AW: Formel per Code erstellen - Sprachversion?
04.12.2007 00:15:46
Daniel
Hi

En Umweg über "?Selection.FormulaR1C1" spare ich mir, und schreib die Formel gleich in den Code :-)


wenn du so gut bist, daß du immer gleich aus dem Kopf richtigen Code schreibst, dann darfst du dich glücklich schätzen.
ich mach halt ab und zu fehler, und da ist es einfacher zum Testen, wenn ich nicht immer das ganze Makro laufen lassen muss.
Vorteil oder Nachteil, ich finde es halt verwirrend, daß
Sub Test_Formula1()
Range("A1, A3, A5").Formula = "=B1"
End Sub
ein anderes Ergebnis liefert als
Sub Test_Formula1()
Range("A1").Formula = "=B1"
Range("A3").Formula = "=B1"
Range("A5").Formula = "=B1"
End Sub
obwohl ich jedesmal die gleiche Formel in die Zellen reinschreibe.
ich denke halt, wenn ich das gleiche irgendwo reinschreibe, sollte auch das gleiche wieder rauskommen, sonst bin ich verwirrt.
Aber gut, ich mache ja auch noch fehler beim Formelnentwickeln und du nicht mehr.
Gruß, Daniel

Anzeige
AW: Formel per Code erstellen - Sprachversion?
04.12.2007 08:02:00
Ramses
Hallo

Sub Test_Formula1()
Range("A1, A3, A5").Formula = "=B1"
End Sub


ein anderes Ergebnis liefert als


Sub Test_Formula1()
Range("A1").Formula = "=B1"
Range("A3").Formula = "=B1"
Range("A5").Formula = "=B1"
End Sub


Ist doch klar. Im ersten Beispiel schreibt EXCEL die Formel gleichzeitig in Zellen, da ist EXCEL "intelligent" genug zu, die Formel entsprechend anzupassen, wie beim kopieren.
In deinem zweiten Beispiel schreibst du explicit die Formel "=B1", daher erfolgt keine Anpassung.
Das liest sich doch nun leichter und lässt sich auch einfacher erstellen
Range("G2").Formula = "=MAX(($B$2:$B$17=F2)*$D$2:$D$17)"
als diese Formel
Range("G2").Formula= "=MAX((R2C2:R17C2=RC[-2])*R2C4:R17C4)"
... oder ? ;-)
Lassen wir es dabei,... wie du schon korrekt bemerkt hast:
Jeder hat seine Vorlieben :-)
Gruss Rainer

Anzeige
AW: Formel per Code erstellen - Sprachversion?
04.12.2007 22:33:00
Daniel
Hi
naja, mit "Intelligenz" von Systemen ist das so ne Sache.
das kann auch störend sein, wenn das System nicht erkennt, was ich will, sondern einfach was annimmt, was vielleicht so sein könnte.
die normale Schreibweise ist vielleicht etwas leicher lesbar (weil gewohnter) aber spätestens wenn ich die Makros ändern will und beschließe daß die Formel nicht mehr in G2 sondern in G5 rein muss, dann habe ich ich bei der R1C1-Schreibweise den Vorteil, daß ich die Formel so belassen kann wie sie ist und nicht ändern muss.
in der Normalen Schreibweise muss ich bei solchen nachträglichen Verschiebungen auch auf jeden Fall die relativen Bezüge in der Formel anpassen.
wirklich zum Tragen kommt der Vorteil dann, wenn die gleiche Formel an verschiedenen Stellen in das Blatt eingetrragen werden soll und man sich dann zur vereinfachung den Formelstring als Variable oder Konstante speichern will.
Gruß, Daniel

Anzeige
AW: Formel per Code erstellen - Sprachversion?
03.12.2007 22:41:00
Daniel
Hi
mag sein, daß es geschmackssache ist, aber gerade in Makros bietet die R1C1-Schreibweise ein paar Handfeste Vorteile.
Bei der Normalen Schreibweise muss ich, wenn meine Formel relative Zellbezüge enthält, immer mit beachten, in welche Zelle ich die Formel gerade reinschreibe!
oder anders ausgedrückt, wenn ich in einer Tabelle eine Formel nach unten kopieren, dann habe ich in der "normalen" Schreibweise in jeder Zelle eine andere Formel stehen, in der R1C1-Schreibweise dagegen sind die Formeltexte alle gleich.
Zugegeben, die R1C1-Schreibweise ist etwas ungewohnt, weil man die Spaltennummern erst in Buchstaben umwandeln muss.
Wenn man mit der R1C1-Schreibweise arbeiten will, sollte man sich angewöhnen nur das relativ zu addressieren, was auch unbedingt relativ addressiert werden muss, alles andere wird absolut addressiert. Dann werden die Formeln ganauso einfach, wie in der "normalen" Schreibweise (in der man für gewöhnlich nur das absolut addressiert, was unbedingt absolut addressiert werden muss)
Gruß, Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige