Excel-Makro, das einfügen von International gültigen Formel während der Laufzeit
Ich habe eine Excel-Tabelle mit einem Makro, das fügt eine bedingte Formatierung, wie diese:
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=UND($A3=""" & lastName & """; $B3=""" & firstName & """)"
Wie Sie sehen können, habe ich die Deutsche Formel für "UND" (also "UND"), und offensichtlich ist dieser code nicht funktioniert sobald ich es auf eine französische oder englische version von Excel.
In der Regel Formeln werden automatisch lokalisiert, aber wie kann ich eine Formel einfügen, die während der Laufzeit, wird auf ALLEN Versionen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, vielen Dank für das helfen mich mit diesem, Sie haben mir geholfen, Riss diese ein.
Es ist in der Tat nicht möglich, nur Englisch. Man kann Englisch beim Betrieb auf einer Formel, wie zB. durch die Einstellung der Codierung
Range("A1").formula="AND(TRUE)"
, aber das funktioniert nicht mitFormatConditions
.Meine Lösung ist eine Funktion, die schreibt eine Formel, die vorübergehend zu einer Zelle, der es liest, durch die
FormulaLocal
- Eigenschaft und liefert die lokalisierte Formel, etwa so:Den zurückgegebenen Formel kann verwendet werden
FormatConditions
, die re-lokalisiert oder nicht lokalisiert, wenn Sie das Dokument später öffnen in einer anderen Sprachversion von Excel.Dim
Linie. In VBA Variablen hochgezogen, was bedeutet, dass die Umsetzung IhrerDim
s Recht, bevor Sie in den Anfang der Funktion sind die gleichen, aber die ehemaligen schließlich täuschen Sie in etwas falsch zu machen.Fand ich eine sehr elegante Lösung für das problem in einer deutschen Excel-forum. Dies muss nicht schreiben, um eine dummy-Zelle, sondern verwendet eine temporären Bereich. Ich benutzte die original-Idee (Kredit bst) zu schreiben, eine übersetzen-Funktion für beide Richtungen.
Konvertieren lokalisierte Formel englische Formel:
Konvertieren englische Formel, um lokalisierte Formel:
Dies ist sehr praktisch, wenn Sie benötigen, um mit Formeln in bedingte Formatierung, da diese Formeln werden immer gespeichert als lokalisierte Formeln (aber Sie brauchen könnten, Ihre generische version, z.B. die Verwendung
Application.Evaluate(genericFormula)
).Store (eine triviale version) die Formel in eine (versteckte) Zelle in Ihrer Arbeitsmappe.
Dann, wenn Sie die Arbeitsmappe öffnen, die Formel wird automatisch übersetzt, von excel für Anwender.
Nun müssen Sie nur noch sezieren dieser Formel im Skript (finden Sie die öffnende Klammer "(" und nehmen Sie die Vergangenheit Links, die:
Etwas wie:
strLocalizedFormula = Mid(strYourFormula, 2, InStr(1, strYourFormula, "(") - 2)
wo
strYourFormula
wird eine Kopie von der Formel aus Ihrem Arbeitsblatt.Ich hoffe das funktioniert da ich nur mit einer englischen Umgebung.
Auch aus der Lektüre dieses:
http://vantedbits.blogspot.nl/2010/10/excel-vba-tip-translate-formulas.html
Ich denke man sollte (nur) in der Lage sein, um die englische version einer Zelle Formel in VBA.
Probier doch mal das (ungetestet, da ich nur englische version installierte vor)
Schreiben Sie Ihre internationalen version der Formel, um ein von der Zelle Weg mit
Range.Formula
. Dann Lesen Sie es wieder ausRange.FormulaLocal
, und schreiben Sie die Zeichenfolge, um zu denFormatConditions
Entnehmen Sie bitte dem link für weitere Informationen: https://bettersolutions.com/csharp/excel-interop/locale-culture.htm
Vielen Dank an alle! Ich fand den Beitrag sehr nützlich.
Meine Lösung ist eine Kombination der anderen, füge ich es im Falle, jemand findet es nützlich.
Hoffe, das hilft!