vba - 阻止 Excel 在 VBA 制作的公式中将逗号更改为分号

标签 vba excel

在公式中使用时,小数(在我们的区域设置中,逗号是小数符号)将更改为分号。

假设我有一个数字(实际上我只是从字段中解析它,但我需要它在变量中):

c = 10,5

如果我这样做:

sheet.Cells(1,1).Formula = "=SUM(" & c & ",10)"

整个公式变为:

=SUM(10;5;10)

逗号总是更改为分号,这会破坏 double 字。 我可以使用 .FormulaLocal,然后分号分隔符在公式中起作用,但逗号仍然起作用,因此无法解决问题。

更改区域设置不起作用,因为我需要分发它并且无法让每个人都更改区域设置。

有什么可以拯救我吗?

最佳答案

如果 c i 作为包含本地格式的 double 值的字符串,您可以使用:

sheet.Cells(1,1).Formula = "=SUM(" & Str(CDbl(c)) & ",10)"

CDbl 会将值从语言环境字符串转换为 Double 格式,Str 将使用 . 作为十进制将其转换为字符串分隔符。

您还可以直接替换DecimalSeparator:

sheet.Cells(1,1).Formula = "=SUM(" & Replace(c, Application.DecimalSeparator, ".") & ",10)"

关于vba - 阻止 Excel 在 VBA 制作的公式中将逗号更改为分号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33369323/

相关文章:

algorithm - 将 VBA 代码转换为 Fortran

arrays - Excel VBA - 使用数组作为自动筛选条件,而不是预期结果

excel - 最大化打开 Excel 电子表格

excel - VBA 的范围导致 "Run time error 9 Subscript out of range"

excel - 如何使用腻子将多个命令传递给 VBA 中的 Shell 函数?

c# - 使用 NPOI 将日期写入 Excel 文件的问题

vba - 如果多个值在单个单元格中,则在 vba 中创建多行

vba - 从 VBA 函数返回一个字符串

vba - Excel VBA - 让 VBA 脚本循环遍历行

vba - 总和最大但小于特定值的子集