使用字符串变量在Excel VBA中设置.NumberFormat的值

时间:2015-10-05 21:34:41

标签: excel vba excel-vba

我尝试使用以下结果设置自定义数字格式:
价值" 22,800"成为"欧洲:22.8 M"

我可以使用数字格式化窗口实现此目的,并使用:
"欧洲:" #,## 0.0," M&#34 ;; "欧洲:" - #,## 0.0," M"

我也可以使用
在VBA窗口中实现这一点 ActiveCell.NumberFormat ="""欧洲:"" #,## 0.0,"" M"&#34 ;; ""欧洲:"" - #,## 0.0,"" M"""

问题在于:我正在运行一个循环函数,该函数从不同的工作表中获取值并将它们粘贴到汇总表上 - 我需要显示区域(例如" Europe")数字旁边,但我不想为我的9个区域编写9个不同时间的循环函数代码。

我尝试过的解决方案,在这里我只想改变变量" region"的值。对于每个循环:

Dim region As String
Dim numformat As String
region = "Europe"
numformat = Chr(34) + Chr(34) + Chr(34) + region + ":" + Chr(34) + Chr(34) + " #,##0.0, " + Chr(34) + Chr(34) + "M" + Chr(34) + Chr(34) + "; " + Chr(34) + Chr(34) + region + ":" + Chr(34) + Chr(34) + " -#,##0.0, " + Chr(34) + Chr(34) + "M" + Chr(34) + Chr(34) + Chr(34)
Selection.NumberFormat = numformat

将数字格式化为"欧洲:#,## 0.0,M;欧洲: - #,## 0.0,M" - 它根本没有显示数字,只是这个字符串。

但是,如果我在直接窗口中使用?numformat返回字符串的值,然后复制/粘贴该值,以便 Selection.NumberFormat ="""欧洲:"" #,## 0.0,"" M"&#34 ;; ""欧洲:"" - #,## 0.0,"" M"""

然后,我得到正确的数字格式,"欧洲:22.8 M"

但这对我没有帮助,因为现在区域名称再次被硬编码。任何人都可以帮助确定我做错了什么,或找出替代解决方案吗?

干杯,

1 个答案:

答案 0 :(得分:2)

使用:

    numFormat = """" & region & ": ""#,##0.0,""M"";""" & region & ":"" -#,##0.0, ""M"""

或者,如果你真的想使用Chr(34),你不需要加倍,因为你不需要逃避它们:

numFormat = Chr(34) & region & ": " & Chr(34) & "#,##0.0," & Chr(34) & "M" & Chr(34) & ";" & Chr(34) & region & ":" & Chr(34) & " -#,##0.0, " & Chr(34) & "M" & Chr(34)