Wai*_*ong 14 excel vba excel-vba
是否可以使用VBA来检测计算机上使用的十进制符号?
我有一个宏脚本,它将条件格式添加到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
Run Code Online (Sandbox Code Playgroud)
小智 17
关于上面的答案,重要的是要知道Application.DecimalSeparator并且Application.International(xlDecimalSeparator)行为方式不同:
Application.DecimalSeparator 即使告诉Excel使用系统分隔符(来自Windows区域设置),也总是输出在Excel选项中选择的小数分隔符Application.International(xlDecimalSeparator)将输出Excel使用的实际小数分隔符,无论它来自Windows设置(何时Application.UseSystemSeparators = True)还是来自Excel选项(何时Application.UseSystemSeparators = False)因此,我强烈建议永远使用Application.International(xlDecimalSeparator).
GSe*_*erg 11
我实际上并不知道接受本地化公式的Formulas FormatConditions.在其他地方,你可以选择Formula和FormulaLocal.
要简单回答问题,您可以使用Application.DecimalSeparator或只是Application.International(xlDecimalSeparator)知道分隔符.
但是对于非平凡的公式,可能更容易将基于不变的基于英语语言环境的公式分配给Application.International(xlDecimalSeparator)隐藏单元格的属性,然后Application.DecimalSeparator从该单元格读取并使用它Formula.Excel将为您完成所有转换.
您可以使用DecimalSeparator属性.
Application.DecimalSeparator 然后返回由运行excel的语言环境定义的小数分隔符.
在旁注:尽管可能,但建议不要改变这一点,而是将其用于满足您的需求.
对于 Excel 以外的应用程序,已接受答案中的解决方案不可用。
相反,您可以使用Format来检索小数点分隔符: in 中未转义的点Format被当前的小数点分隔符替换。
DecimalSeparator = Format(0, ".")
Run Code Online (Sandbox Code Playgroud)
您还可以从注册表中查找小数点分隔符
DecimalSeparator = CreateObject("WScript.Shell").RegRead("HKCU\Control Panel\International\sDecimal")
Run Code Online (Sandbox Code Playgroud)