在 Excel VBA 中更改为加拿大 (CDN) 法语数字格式

Posted

技术标签:

【中文标题】在 Excel VBA 中更改为加拿大 (CDN) 法语数字格式【英文标题】:Change to Canadian (CDN) French number formatting in Excel VBA 【发布时间】:2017-01-04 15:39:56 【问题描述】:

我想构建一段代码,可以将我工作簿中的数字从英文数字格式转换为法文数字格式。

例如,

英文格式为$1,000,000.99,而 法语为1 000 000,99 $

我似乎找不到任何内置于 excel 中的默认法语代码,并且使用 , 而不是 . 的小数点不会显示小于 1 美元的数字。

感谢任何帮助或建议!

【问题讨论】:

【参考方案1】:

要使货币符号出现在数字的右侧,请使用Range 对象的NumberFormat 属性并将其设置为:

美元:#,##0.00 [$$-C0C] 欧元:#,##0.00 [$€-C0C]

小数和数字分组的逗号和句点的行为通常由 Windows 中的区域和语言设置控制。

您可以通过在 VBA 中更改 Application.DecimalSeparatorApplication.ThousandsSeparator 的值,在应用程序范围内更改此设置(即,它将影响在您的计算机上打开的任何工作簿)。或者,您可以通过转到文件>选项>高级并取消选中“使用系统分隔符”来实现相同的效果

【讨论】:

感谢您的帮助!我有一个代码循环,我试图用它来查找和替换我的工作簿中的所有货币格式,但它似乎没有正确地替换为新的格式代码。对于 ActiveWorkbook.Sheets 中的每个工作表 Application.FindFormat.NumberFormat = "$#,##0.00" Application.ReplaceFormat.NumberFormat = "#,##0.00 [$$-40C]" Sheet.Cells.Replace What:="" , Replacement:="", LookAt:=xlPart, SearchOrder _ :=xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True Next 它返回一个应用程序/对象定义的错误。有什么想法吗? @Greg 通常该错误与引用不是Set 的对象有关。这可能是因为您在For Each 循环中使用了Sheet。尝试在 for 上方添加 Dim Sht as Worksheet 并改用 For Each Sht in ActiveWorkbook.Sheets。您还需要将循环内的任何Sheet 更改为Sht 我已将dim Sheet as Worksheet 写入我的代码中,并且所有以下代码都使用此属性,但它不会运行。错误发生在Application.ReplaceFormat.NumberFormat = "#,##0.00 [$$-40C]" @Greg 我的错,代码应该是[$$-C0C]。试试那个。我已经编辑了答案【参考方案2】:

在 Excel 中获取任何操作的代码:

    开始录制宏 通过代码执行您想要复制的操作 停止录制 检查宏代码(ALT+F11)

在这种情况下,应用格式会给出以下代码:

Selection.NumberFormat = "#,##0.00 $"

希望这会有所帮助。

【讨论】:

以上是关于在 Excel VBA 中更改为加拿大 (CDN) 法语数字格式的主要内容,如果未能解决你的问题,请参考以下文章

vba--将excel单元格格式改为常规格式

为啥 VBA 会自动将十进制更改为逗号?

Excel VBA将组合框列表从静态范围更改为动态范围

在Excel VBA上定义变量

vb6.0改Excel的工作表名

EXCEL VBA 事件的问题。