使用VBA来检测计算机正在使用的小数点符号
是否可以使用VBA来检测计算机上正在使用哪个小数点?
我有一个macros脚本,添加一个Excel表格的条件格式。 问题是目标计算机可能使用两个小数点。 所以我想让脚本适用于所有的电脑
代码看起来像这样
With range("D" & row) .FormatConditions.Delete .FormatConditions.Add Type:=xlCellValue, Operator:=xlNotBetween, Formula1:="=1,01*$C$" & row, Formula2:="=0,99*$C$" & row .FormatConditions(1).Font.ColorIndex = 3 End With
我没有真正知道FormatConditions
公式接受本地化的公式。 在其他地方你可以selectFormula
和FormulaLocal
。
要简单地回答这个问题,可以使用Application.International(xlDecimalSeparator)
或简单的Application.DecimalSeparator
来知道分隔符。
但是,对于非平凡的公式,将不变的基于英语语言环境的公式分配给隐藏单元格的Formula
属性可能更容易,然后从该单元格中读取FormulaLocal
并将其用于FormatConditions
。 Excel将为您做所有的转换。
关于上面的答案,重要的是要知道Application.DecimalSeparator
和Application.International(xlDecimalSeparator)
行为不一样:
- 即使Excel被告知要使用系统分隔符(从Windows区域设置),
Application.DecimalSeparator
将总是输出在Excel选项中select的小数分隔符 -
Application.International(xlDecimalSeparator)
将输出Excel使用的实际小数分隔符,无论它来自Windows设置(当Application.UseSystemSeparators = True
)或Excel选项(当Application.UseSystemSeparators = False
)
因此,我强烈build议始终使用Application.International(xlDecimalSeparator)
。
您可以使用DecimalSeparator属性。
Application.DecimalSeparator
然后返回由Excel正在运行的语言环境定义的小数点分隔符。
请注意:即使有可能,最好不要改变这一点,而是将其用于您的需求。
Public Function DecimalSeparator() As String DecimalSeparator = Mid$(1 / 2, 2, 1) End Function