Reputation: 2838
Some people around me using national localization in windows/office. Unfortunately this leads to situation where my macros fail to do simple math as they using comma for decimal position and the pov-ray files, that I editing, use comma only for list separator and point for decimal one. I know that in Excel one can override system decimal separator using
With Application.
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
There is however no such property of Application like DecimalSeparator in MS Word. Is there in MS Word a simple way to overwrite system separator for the time a macros is running? Or do I need to go hard way and replace them during reading of povray files?
Upvotes: 3
Views: 8324
Reputation: 1
sub ReplaceCommabetweenDigits(sData as String)
sData = Replace(sData, "0,0", "0.0")
sData = Replace(sData, "0,1", "0.1")
sData = Replace(sData, "0,2", "0.2")
sData = Replace(sData, "0,3", "0.3")
sData = Replace(sData, "0,4", "0.4")
sData = Replace(sData, "0,5", "0.5")
sData = Replace(sData, "0,6", "0.6")
sData = Replace(sData, "0,7", "0.7")
sData = Replace(sData, "0,8", "0.8")
sData = Replace(sData, "0,9", "0.9")
sData = Replace(sData, "1,0", "1.0")
sData = Replace(sData, "1,1", "1.1")
sData = Replace(sData, "1,2", "1.2")
sData = Replace(sData, "1,3", "1.3")
sData = Replace(sData, "1,4", "1.4")
sData = Replace(sData, "1,5", "1.5")
sData = Replace(sData, "1,6", "1.6")
sData = Replace(sData, "1,7", "1.7")
sData = Replace(sData, "1,8", "1.8")
sData = Replace(sData, "1,9", "1.9")
sData = Replace(sData, "2,0", "2.0")
sData = Replace(sData, "2,1", "2.1")
sData = Replace(sData, "2,2", "2.2")
sData = Replace(sData, "2,3", "2.3")
sData = Replace(sData, "2,4", "2.4")
sData = Replace(sData, "2,5", "2.5")
sData = Replace(sData, "2,6", "2.6")
sData = Replace(sData, "2,7", "2.7")
sData = Replace(sData, "2,8", "2.8")
sData = Replace(sData, "2,9", "2.9")
sData = Replace(sData, "3,0", "3.0")
sData = Replace(sData, "3,1", "3.1")
sData = Replace(sData, "3,2", "3.2")
sData = Replace(sData, "3,3", "3.3")
sData = Replace(sData, "3,4", "3.4")
sData = Replace(sData, "3,5", "3.5")
sData = Replace(sData, "3,6", "3.6")
sData = Replace(sData, "3,7", "3.7")
sData = Replace(sData, "3,8", "3.8")
sData = Replace(sData, "3,9", "3.9")
sData = Replace(sData, "4,0", "4.0")
sData = Replace(sData, "4,1", "4.1")
sData = Replace(sData, "4,2", "4.2")
sData = Replace(sData, "4,3", "4.3")
sData = Replace(sData, "4,4", "4.4")
sData = Replace(sData, "4,5", "4.5")
sData = Replace(sData, "4,6", "4.6")
sData = Replace(sData, "4,7", "4.7")
sData = Replace(sData, "4,8", "4.8")
sData = Replace(sData, "4,9", "4.9")
sData = Replace(sData, "5,0", "5.0")
sData = Replace(sData, "5,1", "5.1")
sData = Replace(sData, "5,2", "5.2")
sData = Replace(sData, "5,3", "5.3")
sData = Replace(sData, "5,4", "5.4")
sData = Replace(sData, "5,5", "5.5")
sData = Replace(sData, "5,6", "5.6")
sData = Replace(sData, "5,7", "5.7")
sData = Replace(sData, "5,8", "5.8")
sData = Replace(sData, "5,9", "5.9")
sData = Replace(sData, "6,0", "6.0")
sData = Replace(sData, "6,1", "6.1")
sData = Replace(sData, "6,2", "6.2")
sData = Replace(sData, "6,3", "6.3")
sData = Replace(sData, "6,4", "6.4")
sData = Replace(sData, "6,5", "6.5")
sData = Replace(sData, "6,6", "6.6")
sData = Replace(sData, "6,7", "6.7")
sData = Replace(sData, "6,8", "6.8")
sData = Replace(sData, "6,9", "6.9")
sData = Replace(sData, "7,0", "7.0")
sData = Replace(sData, "7,1", "7.1")
sData = Replace(sData, "7,2", "7.2")
sData = Replace(sData, "7,3", "7.3")
sData = Replace(sData, "7,4", "7.4")
sData = Replace(sData, "7,5", "7.5")
sData = Replace(sData, "7,6", "7.6")
sData = Replace(sData, "7,7", "7.7")
sData = Replace(sData, "7,8", "7.8")
sData = Replace(sData, "7,9", "7.9")
sData = Replace(sData, "8,0", "8.0")
sData = Replace(sData, "8,1", "8.1")
sData = Replace(sData, "8,2", "8.2")
sData = Replace(sData, "8,3", "8.3")
sData = Replace(sData, "8,4", "8.4")
sData = Replace(sData, "8,5", "8.5")
sData = Replace(sData, "8,6", "8.6")
sData = Replace(sData, "8,7", "8.7")
sData = Replace(sData, "8,8", "8.8")
sData = Replace(sData, "8,9", "8.9")
sData = Replace(sData, "8,0", "8.0")
sData = Replace(sData, "9,1", "9.1")
sData = Replace(sData, "9,2", "9.2")
sData = Replace(sData, "9,3", "9.3")
sData = Replace(sData, "9,4", "9.4")
sData = Replace(sData, "9,5", "9.5")
sData = Replace(sData, "9,6", "9.6")
sData = Replace(sData, "9,7", "9.7")
sData = Replace(sData, "9,8", "9.8")
sData = Replace(sData, "9,9", "9.9")
End sub
Upvotes: -2
Reputation: 2838
Being not very patient I did it the "harder way". I declared public variable
Public strDecimal As String
and then on the beginning of main sub I set its value with:
strDecimal = Application.International(wdDecimalSeparator)
Then in source I replaced all read-ins like
CDbl(strShort(5))
with
CDbl(Replace(strShort(5), ".", strDecimal))
and all write-outs like
Selection.TypeText Text:=CStr(Int(1000 * bondRadius) / 1000)
with
Selection.TypeText Text:=CStr(Replace(Int(1000 * bondRadius) / 1000, strDecimal, "."))
It's not as elegant as overwriting systems setting but it took me not too much time and it works for me. If anyone can see reason, why it should on occasion fail, please leave some comments.
I'll play a bit with info from barrowc's comment (thanx) to see if it's read only or read-write value.
Upvotes: 3