VBA格式问题

Posted

技术标签:

【中文标题】VBA格式问题【英文标题】:VBA formatting issue 【发布时间】:2018-11-25 14:53:02 【问题描述】:

我正在使用 VBA(€ 会计)格式化具有以下格式的单元格:

"_-* #.##0,00 €_-;-* #.##0,00 €_-;_-* ""-""?? €_-;_-@_-"

但奇怪的是,在 Excel 中,数字显示为 50,05 是 50,05000 欧元。

当我选择格式时,我得到以下信息:

_-* #,##000 \€_-;-* #,##000 \€_-;_-* "-"?? \€_-;_-@_-

零中的逗号不见了。我该如何解决这个问题?

谢谢

【问题讨论】:

【参考方案1】:

我发现左边的. 很奇怪。

我会尝试类似"_-* # ##0,00 €_-;-* # ##0,00 €_-;_-* ""-""?? €_-;_-@_-"

【讨论】:

【参考方案2】:

我在这里看到了一些千位和小数点分隔符错误

"_-* #.##0,00 €_-;-* #.##0,00 €_-;_-* ""-""?? €_-;_-@_-" 用于点作为千位分隔符和逗号作为小数分隔符

虽然您的示例(即50,05)指向逗号小数分隔符

可能是你的excel采用了相反的约定

转到单击文件>选项,单击“高级”选项卡并转到“编辑选项”部分,最后您可以检查假定的千位和小数分隔符

然后相应地更改您的代码

或者您可以使用采用当前分隔符约定的有点“不敏感”的代码:

Selection.NumberFormat = "_-* #" & Application.ThousandsSeparator & "##0" & Application.DecimalSeparator & ",00 €_-;-* #" & Application.ThousandsSeparator & "##0" & Application.DecimalSeparator & "00 €_-;_-* ""-""?? €_-;_-@_-"

或者,以更易读的形式:

With Application
    Selection.NumberFormat = "_-* #" & .ThousandsSeparator & "##0" & .DecimalSeparator & ",00 €_-;-* #" & .ThousandsSeparator & "##0" & .DecimalSeparator & "00 €_-;_-* ""-""?? €_-;_-@_-"
End With

【讨论】:

【参考方案3】:

我发现了错误。我不得不交换逗号并指向:

"_-* #,##0.00 €_-;-* #,##0.00 €_-;_-* ""-""?? €_-;_-@_-"

【讨论】:

以上是关于VBA格式问题的主要内容,如果未能解决你的问题,请参考以下文章

VBA格式化为会计格式

使用 VBA 根据值自动格式化单元格

excel日期格式与vba中的不同

Excel + VBA 与货币格式之间的精度问题

VBA访问条件格式重置新记录

使用 VBA 在 Access 中导入 txt 文件 - 日期格式问题 - 导入规范