VBA deutsch/englisch

Hallo zusammen,

habe ein Makro geschrieben in dem ich deutsche Formeln drinne habe.
Nun muss ichs umschreiben, dass es auf englischen Versionen funktioniert (nebenbei danke, dass man mir das sagt nachdem ich fertig war!)

Gibt es eine Möglichkeit, mit meiner deutschen Version zu gucken, ob es in einer englischen funktionieren würde? Also sozusagen mein VBA-Editor umzustellen, das er nur englisch oder die allgemeingültige Sprache nimmt?

Danke schonmal!

gucken, ob es in einer englischen funktionieren würde? Also
sozusagen mein VBA-Editor umzustellen, das er nur englisch
oder die allgemeingültige Sprache nimmt?

Hallo Brille,

m.E. kannste da nix umstellen.

Zeige mal dein Makro.

Die englischen Bezeichnungen kennst du?
Wenn nicht, schau mal auf deinem Rechner nach dieser Mappe:
vbalist*.xls*

Beispiel für dt/engl

.Formulalocal="=ZÄHLENWENN(A:A;"„xyz“")"
.Formula="=COUNTIF(A:A,"„xyz“")"

Beachte das Semikolon und das Komma.
Bei Zahlen Punkt und Komma.
Die Variante mit .Formula funktioniert weltweit, egal welche Sprache da das Excel hat.

Gruß
Reinhard

Hallo Reinhard,

Formeln sind alle umgestellt (waren zum Glück nur 3), aber mit Format gibts noch Probleme. Habe zum Beispiel:

KostenM = Format(CDbl(PKostenM) + CDbl(MKostenM) + CDbl(EnergieM), „#,##0.00 €“)

Reicht es bei Formaten einfach Punkt und Komma zu tauschen, oder ist da noch etwas zu beachten?

MfG

KostenM = Format(CDbl(PKostenM) + CDbl(MKostenM) +
CDbl(EnergieM), „#,##0.00 €“)

Reicht es bei Formaten einfach Punkt und Komma zu tauschen,
oder ist da noch etwas zu beachten?

Hallo Brille,

m.W. gibt es nichts sonstiges was man beachten müßte. Aber ich kann das nicht 100 %ig so sagen, hab kein engl. Excel.
Hier turnen *gg* ja auch nette Schweizer mitrum, die haben auch Punkt als Dezimaltrenner. Was ich aber nicht weiß ist ob sich engl. Excel von dem Excel in der Schweiz unterscheidet.

Ansonsten, D anstatt T und Y anstatt J, aber das ist wohl klar.
Bei beiden ist Groß/klein egal, bei M oder m aber nicht.

Tipp: Schreib mal in A1 manuell eine Formel wie Zählenwenn o.ä. rein.
Dann lass diesen Code ablaufen:

Sub tt()
With Range("A1")
 .NumberFormatLocal = "#.###,00"
 .Offset(0, 1) = "'" & .NumberFormat
 .Offset(1, 1) = "'" & .Formula
End With
End Sub

Kann bei längeren, komplizierteren Formeln hilfreich werden.
Dann muß man nur ggfs. die Gänsefüßchen verdoppeln.

Teste mal mit entsprechend großen Dezimalzahlen wie Excel rechnet, weiß das grad nicht, vermute es aber:
Also ob du anstatt
CDbl(PKostenM) + CDbl(MKostenM) + CDbl(EnergieM)
auch schreiben kannst:
CDbl(PKostenM + MKostenM + EnergieM)

Gruß
Reinhard

Teste mal mit entsprechend großen Dezimalzahlen wie Excel
rechnet, weiß das grad nicht, vermute es aber:
Also ob du anstatt
CDbl(PKostenM) + CDbl(MKostenM) + CDbl(EnergieM)
auch schreiben kannst:
CDbl(PKostenM + MKostenM + EnergieM)

Danke für den Code, dann kann ich die Formeln nochmal prüfen.

Mit dem CDbl zusammenfassen geht nicht, dann sagt er Typen unverträglich.

Problem scheint wohl zu sein, dass die Excelversion vom Chef anscheinend kein Euro-Format kennt. Habs mal abgeändert in
KostenNeuM = Format(CDbl(PersonalNeu) + CDbl(MaterialNeu) + CDbl(EnergieNeu), „#,##0.00“ & " €")

Hoffe das war alles. Manchmal hasse ich Excel!

Hallo Brille,

Mit dem CDbl zusammenfassen geht nicht, dann sagt er Typen
unverträglich.

tja nun, Excel führt da gelegentlich ein Eigenleben, schau mal hier:

Sub tt()
Dim c As Single
c = 1234567890.123
MsgBox Format(CDbl©, „000.0000“)
[a1] = Format(CDbl©, „000.0000“)
End Sub

Problem scheint wohl zu sein, dass die Excelversion vom Chef
anscheinend kein Euro-Format kennt. Habs mal abgeändert in
KostenNeuM = Format(CDbl(PersonalNeu) + CDbl(MaterialNeu) +
CDbl(EnergieNeu), „#,##0.00“ & " €")

Und das funktioniert dann in engl.? Zu vorher sehe ich aber keinen Unterschied.

Hoffe das war alles.

k.A. Wenn dein Chef brauxchbar für sowas ist bitte ihn mal nachstehenden Code von CountryCodes in einer leeren Mappe laufen zu lassen und dir die Mappe zu schicken. Die Mappe würde ich auch gerne sehen.
Du kannst kja dann hier den Code auch starten und dann beides vergleichen, vielleicht vfallen dir ja dann noch potentielle knackpunkte auf.

Übrigens für Code der in D und CH laufen soll habe ich ein ähnliches Problem so gelöst:

Function DezimalTrenner() As String
DezimalTrenner = GetEntry(LOCALE_SDECIMAL)
End Function

GetEntry ist die Funktion aus dem nachstehenden Code.

.Range(„B3:AS33“).NumberFormat = IIf(DezimalTrenner = „,“, „#,##0.0“, „#.##0,0“)

Option Explicit
' Ursprungscode von:
' http://www.activevb.de/tipps/vb6tipps/tipp0277.html
Public lngRow As Long

Private Declare Function GetSystemDefaultLCID Lib \_
 "kernel32" () As Long

Private Declare Function GetLocaleInfo Lib "kernel32" \_
 Alias "GetLocaleInfoA" (ByVal Locale As Long, \_
 ByVal LCType As Long, ByVal lpLCData As String, \_
 ByVal cchData As Long) As Long

Const LOCALE\_ILANGUAGE = &H1
Const LOCALE\_SLANGUAGE = &H2
Const LOCALE\_SENGLANGUAGE = &H1001
Const LOCALE\_SABBREVLANGNAME = &H3
Const LOCALE\_SNATIVELANGNAME = &H4
Const LOCALE\_ICOUNTRY = &H5
Const LOCALE\_SCOUNTRY = &H6
Const LOCALE\_SENGCOUNTRY = &H1002
Const LOCALE\_SABBREVCTRYNAME = &H7
Const LOCALE\_SNATIVECTRYNAME = &H8
Const LOCALE\_IDEFAULTLANGUAGE = &H9
Const LOCALE\_IDEFAULTCOUNTRY = &HA
Const LOCALE\_IDEFAULTCODEPAGE = &HB
Const LOCALE\_SLIST = &HC
Const LOCALE\_IMEASURE = &HD
Const LOCALE\_SDECIMAL = &HE
Const LOCALE\_STHOUSAND = &HF
Const LOCALE\_SGROUPING = &H10
Const LOCALE\_IDIGITS = &H11
Const LOCALE\_ILZERO = &H12
Const LOCALE\_SNATIVEDIGITS = &H13
Const LOCALE\_SCURRENCY = &H14
Const LOCALE\_SINTLSYMBOL = &H15
Const LOCALE\_SMONDECIMALSEP = &H16
Const LOCALE\_SMONTHOUSANDSEP = &H17
Const LOCALE\_SMONGROUPING = &H18
Const LOCALE\_ICURRDIGITS = &H19
Const LOCALE\_IINTLCURRDIGITS = &H1A
Const LOCALE\_ICURRENCY = &H1B
Const LOCALE\_INEGCURR = &H1C
Const LOCALE\_SDATE = &H1D
Const LOCALE\_STIME = &H1E
Const LOCALE\_SSHORTDATE = &H1F
Const LOCALE\_SLONGDATE = &H20
Const LOCALE\_STIMEFORMAT = &H1003
Const LOCALE\_IDATE = &H21
Const LOCALE\_ILDATE = &H22
Const LOCALE\_ITIME = &H23
Const LOCALE\_ICENTURY = &H24
Const LOCALE\_ITLZERO = &H25
Const LOCALE\_IDAYLZERO = &H26
Const LOCALE\_IMONLZERO = &H27
Const LOCALE\_S1159 = &H28
Const LOCALE\_S2359 = &H29
Const LOCALE\_SDAYNAME1 = &H2A
Const LOCALE\_SDAYNAME2 = &H2B
Const LOCALE\_SDAYNAME3 = &H2C
Const LOCALE\_SDAYNAME4 = &H2D
Const LOCALE\_SDAYNAME5 = &H2E
Const LOCALE\_SDAYNAME6 = &H2F
Const LOCALE\_SDAYNAME7 = &H30
Const LOCALE\_SABBREVDAYNAME1 = &H31
Const LOCALE\_SABBREVDAYNAME2 = &H32
Const LOCALE\_SABBREVDAYNAME3 = &H33
Const LOCALE\_SABBREVDAYNAME4 = &H34
Const LOCALE\_SABBREVDAYNAME5 = &H35
Const LOCALE\_SABBREVDAYNAME6 = &H36
Const LOCALE\_SABBREVDAYNAME7 = &H37
Const LOCALE\_SMONTHNAME1 = &H38
Const LOCALE\_SMONTHNAME2 = &H39
Const LOCALE\_SMONTHNAME3 = &H3A
Const LOCALE\_SMONTHNAME4 = &H3B
Const LOCALE\_SMONTHNAME5 = &H3C
Const LOCALE\_SMONTHNAME6 = &H3D
Const LOCALE\_SMONTHNAME7 = &H3E
Const LOCALE\_SMONTHNAME8 = &H3F
Const LOCALE\_SMONTHNAME9 = &H40
Const LOCALE\_SMONTHNAME10 = &H41
Const LOCALE\_SMONTHNAME11 = &H42
Const LOCALE\_SMONTHNAME12 = &H43
Const LOCALE\_SABBREVMONTHNAME1 = &H44
Const LOCALE\_SABBREVMONTHNAME2 = &H45
Const LOCALE\_SABBREVMONTHNAME3 = &H46
Const LOCALE\_SABBREVMONTHNAME4 = &H47
Const LOCALE\_SABBREVMONTHNAME5 = &H48
Const LOCALE\_SABBREVMONTHNAME6 = &H49
Const LOCALE\_SABBREVMONTHNAME7 = &H4A
Const LOCALE\_SABBREVMONTHNAME8 = &H4B
Const LOCALE\_SABBREVMONTHNAME9 = &H4C
Const LOCALE\_SABBREVMONTHNAME10 = &H4D
Const LOCALE\_SABBREVMONTHNAME11 = &H4E
Const LOCALE\_SABBREVMONTHNAME12 = &H4F
Const LOCALE\_SABBREVMONTHNAME13 = &H100F
Const LOCALE\_SPOSITIVESIGN = &H50
Const LOCALE\_SNEGATIVESIGN = &H51
Const LOCALE\_IPOSSIGNPOSN = &H52
Const LOCALE\_INEGSIGNPOSN = &H53
Const LOCALE\_IPOSSYMPRECEDES = &H54
Const LOCALE\_IPOSSEPBYSPACE = &H55
Const LOCALE\_INEGSYMPRECEDES = &H56
Const LOCALE\_INEGSEPBYSPACE = &H57
Const LOCALE\_USER\_DEFAULT = &H400
Const LOCALE\_SYSTEM\_DEFAULT As Long = &H400

Sub CountryCodes()
Columns(1).ClearContents
lngRow = 0
GLI LOCALE\_SLIST, "Listentrennzeichen"
GLI LOCALE\_IMEASURE, "0=metrisch, 1=US"
GLI LOCALE\_SDECIMAL, "Dezimaltrennzeichen"
GLI LOCALE\_STHOUSAND, "Tausendertrennzeichen"
GLI LOCALE\_SGROUPING, "Gruppierung links vom Komma"
GLI LOCALE\_IDIGITS, "Zahlen hinter dem Komma"
GLI LOCALE\_ILZERO, "führende Nullen"
GLI LOCALE\_SCURRENCY, "Währungsymbol"
GLI LOCALE\_SINTLSYMBOL, "Währung nach ISO 4217"
GLI LOCALE\_SMONDECIMALSEP, "Währungstrennzeichen"
GLI LOCALE\_SMONTHOUSANDSEP, "Währungstausendertrennzeichen"
GLI LOCALE\_SMONGROUPING, "Währungsgruppierung"
GLI LOCALE\_ICURRDIGITS, "Zahlen hinter dem Komma (Pf)"
GLI LOCALE\_ICURRENCY, "Anzeige des Währungssymbols"
GLI LOCALE\_INEGCURR, "Negatives Währungsvorzeichen"
GLI LOCALE\_SDATE, "Datumstrennzeichen"
GLI LOCALE\_STIME, "Zeittrennzeichen"
GLI LOCALE\_SSHORTDATE, "Kurzes Datumsformat"
GLI LOCALE\_SLONGDATE, "Langes Datumsformat"
GLI LOCALE\_STIMEFORMAT, "Zeitformat"
GLI LOCALE\_ITIME, "12/24 Stunden"
GLI LOCALE\_S1159, "AM-Zeichen"
GLI LOCALE\_S2359, "PM-Zeichen"
GLI LOCALE\_SPOSITIVESIGN, "Positives Vorz."
GLI LOCALE\_SNEGATIVESIGN, "Negatives Vorz."
GLI LOCALE\_ILANGUAGE, "Sprach ID"
GLI LOCALE\_SLANGUAGE, "Lokalisierter Sprachname"
GLI LOCALE\_SENGLANGUAGE, "Engl. Äquivalent"
GLI LOCALE\_SABBREVLANGNAME, "Abgekürzt"
GLI LOCALE\_SNATIVELANGNAME, "Sprache in Landessprache"
GLI LOCALE\_ICOUNTRY, "Ländercode"
GLI LOCALE\_SCOUNTRY, "Ländername"
GLI LOCALE\_SENGCOUNTRY, "Ländername in Engl."
GLI LOCALE\_SABBREVCTRYNAME, "Abgekürzt"
GLI LOCALE\_SNATIVECTRYNAME, "Land in Landessprache"
GLI LOCALE\_IDEFAULTLANGUAGE, "Standard Sprach-ID"
GLI LOCALE\_IDEFAULTCOUNTRY, "Standard Landes-ID"
GLI LOCALE\_IDEFAULTCODEPAGE, "Standard Codeseite"
GLI LOCALE\_SNATIVEDIGITS, "gebräuchliche Zahlen"
GLI LOCALE\_IINTLCURRDIGITS, "Zahlen hinter Komma nach ISO"
GLI LOCALE\_IDATE, "Datums Gruppierung"
GLI LOCALE\_ILDATE, "Reihenfolge langes Datumsformat"
GLI LOCALE\_ICENTURY, "Jahr in 2/4 Ziffern"
GLI LOCALE\_ITLZERO, "führende Null für Zeiten"
GLI LOCALE\_IDAYLZERO, "führende Null für Tage"
GLI LOCALE\_IMONLZERO, "führende Null für Monate"
GLI LOCALE\_SDAYNAME1, "Langer Name für Mo"
GLI LOCALE\_SDAYNAME2, "Langer Name für Di"
GLI LOCALE\_SDAYNAME3, "Langer Name für Mi"
GLI LOCALE\_SDAYNAME4, "Langer Name für Do"
GLI LOCALE\_SDAYNAME5, "Langer Name für Fr"
GLI LOCALE\_SDAYNAME6, "Langer Name für Sa"
GLI LOCALE\_SDAYNAME7, "Langer Name für So"
GLI LOCALE\_SABBREVDAYNAME1, "Abgk. Name für Mo"
GLI LOCALE\_SABBREVDAYNAME2, "Abgk. Name für Di"
GLI LOCALE\_SABBREVDAYNAME3, "Abgk. Name für Mi"
GLI LOCALE\_SABBREVDAYNAME4, "Abgk. Name für Do"
GLI LOCALE\_SABBREVDAYNAME5, "Abgk. Name für Fr"
GLI LOCALE\_SABBREVDAYNAME6, "Abgk. Name für Sa"
GLI LOCALE\_SABBREVDAYNAME7, "Abgk. Name für So"
GLI LOCALE\_SMONTHNAME1, "Langer Name für Jan"
GLI LOCALE\_SMONTHNAME2, "Langer Name für Feb"
GLI LOCALE\_SMONTHNAME3, "Langer Name für Mae"
GLI LOCALE\_SMONTHNAME4, "Langer Name für Mai"
GLI LOCALE\_SMONTHNAME5, "Langer Name für Apr"
GLI LOCALE\_SMONTHNAME6, "Langer Name für Jun"
GLI LOCALE\_SMONTHNAME7, "Langer Name für Jul"
GLI LOCALE\_SMONTHNAME8, "Langer Name für Aug"
GLI LOCALE\_SMONTHNAME9, "Langer Name für Sep"
GLI LOCALE\_SMONTHNAME10, "Langer Name für Okt"
GLI LOCALE\_SMONTHNAME11, "Langer Name für Nov"
GLI LOCALE\_SMONTHNAME12, "Langer Name für Dez"
GLI LOCALE\_SABBREVMONTHNAME1, "Abgk. Name für Jan"
GLI LOCALE\_SABBREVMONTHNAME2, "Abgk. Name für Feb"
GLI LOCALE\_SABBREVMONTHNAME3, "Abgk. Name für Mae"
GLI LOCALE\_SABBREVMONTHNAME4, "Abgk. Name für Apr"
GLI LOCALE\_SABBREVMONTHNAME5, "Abgk. Name für Mai"
GLI LOCALE\_SABBREVMONTHNAME6, "Abgk. Name für Jun"
GLI LOCALE\_SABBREVMONTHNAME7, "Abgk. Name für Jul"
GLI LOCALE\_SABBREVMONTHNAME8, "Abgk. Name für Aug"
GLI LOCALE\_SABBREVMONTHNAME9, "Abgk. Name für Sep"
GLI LOCALE\_SABBREVMONTHNAME10, "Abgk. Name für Okt"
GLI LOCALE\_SABBREVMONTHNAME11, "Abgk. Name für Nov"
GLI LOCALE\_SABBREVMONTHNAME12, "Abgk. Name für Dez"
GLI LOCALE\_IPOSSIGNPOSN, "Format. für pos. Währung"
GLI LOCALE\_INEGSIGNPOSN, "Format. für neg. Währung"
GLI LOCALE\_IPOSSYMPRECEDES, "Präfix für pos. Währungsvorzeichen"
GLI LOCALE\_IPOSSEPBYSPACE, "Trennz. bei pos. Währungsbetrag"
GLI LOCALE\_INEGSYMPRECEDES, "Präfix für neg. Währungsvorzeichen"
GLI LOCALE\_INEGSEPBYSPACE, "Trennz. bei neg. Währungsbetrag"
End Sub

Sub GLI(ID&, Text$)
lngRow = lngRow + 1
Cells(lngRow, 1) = ID
Cells(lngRow, 2) = GetEntry(ID)
Cells(lngRow, 3) = Text
End Sub

Function GetEntry(ID&amp:wink: As String
Dim LCID&, Result&, Buffer$, Length&
LCID = GetSystemDefaultLCID()
Length = GetLocaleInfo(LCID, ID, Buffer, 0) - 1
Buffer = Space(Length + 1)
Result = GetLocaleInfo(LCID, ID, Buffer, Length)
GetEntry = Left$(Buffer, Length)
End Function