在 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.DecimalSeparator
和 Application.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) 法语数字格式的主要内容,如果未能解决你的问题,请参考以下文章