2016-03-01 3 views
5

ich richtig verstehe, dass, wenn ich einen Befehl wieVerschiedene Sprachen Thema, wenn Formel von VBA Einfügen

Set myRange.formula = “=ROW(mySheet!R12)” 

mein Makro #NAME? Fehler in Zellen angezeigt verursachen verwenden, wenn es laufen auf, sagen wir, Russisch Excel. Ich meine, dass die obige Formel in diesem Fall hartcodiert wie

Set myRange.formula = “=СТРОКА(mySheet!R12)” 

wo СТРОКА der russische Analogon der SUM-Funktion ist werden soll. Ich würde nicht erwarten, dass Excel intelligent genug ist, um die Formeln in der Laufzeit zu übersetzen. Also gibt es einen Weg um dies und vor allem, was ist der allgemeinste Code, um das Makro unabhängig von Sprache richtig zu machen?

Antwort

10

VBA ist sehr EN-US-zentrisch. VBA's .Formula und .FormulaR1C1 erwarten die ROW function. Um regionale Sprachfunktionsaromen wie СТРОКА zu verwenden, sollten stattdessen die Range.FormulaLocal property oder Range.FormulaR1C1Local property verwendet werden.

Das Gleiche gilt für Listentrennzeichen. Verwenden Sie ein Komma (z. B. ,), um die Argumente in einer Funktion zu trennen, wenn Sie .Formula oder .FormulaR1C1 unabhängig von regionalen Systemeinstellungen verwenden. Wenn Ihr System ein Semikolon (z. B. ;) als Listentrennzeichen verwendet, sollte dieses nur mit .FormulaLocal oder .FormulaR1C1Local verwendet werden.

Das Ergebnis auf dem Arbeitsblatt wird die Spracheinstellungen der Office-Installation ordnungsgemäß widerspiegeln.

myRange.Formula = "=ROW(mySheet!$12:$12)" 
myRange.FormulaR1C1 = "=ROW(mySheet!R12)" 
myRange.FormulaLocal = "=СТРОКА(mySheet!$12:$12)" 
myRange.FormulaR1C1Local= "=СТРОКА(mySheet!R12)" 
+0

Also, ich Sie richtig verstehe, dass die Verwendung von .FormulaLocal wird mein Code absolut lebensfähig und nicht abhängig von der languange System machen? –

+0

Warum brauchen wir dann die Methode? Formel überhaupt?)) Und warum integrieren sie nicht einfach die Funktionalität von .FormulaLocal in die Methode .Formel?)) Merkwürdig genug –

+0

Ja, sollte es. Sie müssen nur sicherstellen, dass Sie entweder [.FormulaLocal] (https://msdn.microsoft.com/en-us/library/office/ff838851.aspx) oder [.FormulaR1C1Local] verwenden (https://msdn.microsoft.com/en-us/library/office/ff838568.aspx) entsprechend. Die 'R12'-Referenz in Ihrer Probe war ein wenig mehrdeutig; Ich hoffe ich habe richtig geraten. Außerdem müssen alle in der Formel enthaltenen Anführungszeichen verdoppelt werden, da sie in einer Zeichenfolge in Anführungszeichen stehen. z.B. '=" abc "' wird '.FormulaLocal =" = "" abc "" "'. – Jeeped

Verwandte Themen