使用stringvariables在Excel VBA中设置.NumberFormat的值

我试图设置一个自定义数字格式,结果如下:
值“22,800”变成“欧洲:22.8M”

我可以使用数字格式化窗口来实现这一点,并使用:
“Europe:”#,## 0.0,“M”; “Europe:” – #,## 0.0,“M”

我也可以在VBA窗口中实现这个使用
ActiveCell.NumberFormat =“”“Europe:”“#,## 0.0,”“M”“;”“欧洲:”“ – #,## 0.0,”“M”“”

这里是问题:我正在运行一个循环函数,它从不同的工作表获取值并将它们粘贴到汇总表中 – 我需要显示该数字旁边的区域(例如“欧洲”),但是我不想为我的9个区域写9次循环的代码。

我尝试的解决scheme,在这里我只是改变每个循环的variables“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” – 它根本不显示数字,只是这个string。

但是,如果我在即时窗口中使用?numformat来返回string的值,然后复制/粘贴该值以便
Selection.NumberFormat =“”“Europe:”“#,## 0.0,”“M”“;”“Europe:”“ – #,## 0.0,”“M”“”

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

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

干杯,

使用:

  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)