使用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公式接受本地化的公式。 在其他地方你可以selectFormulaFormulaLocal

要简单地回答这个问题,可以使用Application.International(xlDecimalSeparator)或简单的Application.DecimalSeparator来知道分隔符。

但是,对于非平凡的公式,将不变的基于英语语言环境的公式分配给隐藏单元格的Formula属性可能更容易,然后从该单元格中读取FormulaLocal并将其用于FormatConditions 。 Excel将为您做所有的转换。

关于上面的答案,重要的是要知道Application.DecimalSeparatorApplication.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