我尝试使用以下结果设置自定义数字格式:
价值" 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"
但这对我没有帮助,因为现在区域名称再次被硬编码。任何人都可以帮助确定我做错了什么,或找出替代解决方案吗?
干杯,
乙
答案 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)