如何在 VBA 中使用 .number 格式并将 double 类型的变量作为比较器
How to use .numberformat in VBA with variable of type double as comperator
亲爱的,我想根据单元格值格式化我的单元格。有 3 种可能的条件:
Cell is larger than 0.05 -> the Value should stay the same but be fromated to 0.0
Cell is smaller than a variable (called Threshold) -> the Value should be replaced with a String "a.C."
Cell is Zero -> the Value should be replaced with a Dash"
我在 here. How to add a text string .numberformat in vba is discussed here!
中找到了没有变量的方法
这个:
.NumberFormat = "[=0]---;[<0.05] ""a.C."";0.0 "
有效,而这个:
Dim threshold as Double
threshold = 0.05
.NumberFormat = "[=0]---;[<threshold] ""a.C."";0.0 "
无效。我想我需要将一个特殊的变量错别字传递给“<”比较器,或者我需要以某种方式转义该变量?
如有提示,将不胜感激!
提前谢谢你
那是因为 threshold
是您的数字格式字符串的一部分。基本上引号内的所有内容都不会被 VBA 触及 - 除了告诉 VBA 在字符串中使用引号字符而不是结束字符串的双引号。
要将变量的内容放入字符串中,请使用字符串连接。这是在 VBA 中使用“&”运算符完成的:
.NumberFormat = "[=0]---;[<" & threshold & "] ""a.C."";0.0 "
但是,由于四舍五入,Double 可能有点令人讨厌,因此最好使用格式命令以所需的形式输出它(例如,小数点后 2 位)。使用一个中间变量通常是个好主意,您可以通过调试器轻松检查它:
Dim myNumberFormat as string
myNumberFormat = "[=0]---;[<" _
& format(threshold, "0.00") _
& "] ""a.C."";0.0 "
.NumberFormat = myNumberFormat
亲爱的,我想根据单元格值格式化我的单元格。有 3 种可能的条件:
Cell is larger than 0.05 -> the Value should stay the same but be fromated to 0.0
Cell is smaller than a variable (called Threshold) -> the Value should be replaced with a String "a.C."
Cell is Zero -> the Value should be replaced with a Dash"
我在 here. How to add a text string .numberformat in vba is discussed here!
中找到了没有变量的方法这个:
.NumberFormat = "[=0]---;[<0.05] ""a.C."";0.0 "
有效,而这个:
Dim threshold as Double
threshold = 0.05
.NumberFormat = "[=0]---;[<threshold] ""a.C."";0.0 "
无效。我想我需要将一个特殊的变量错别字传递给“<”比较器,或者我需要以某种方式转义该变量?
如有提示,将不胜感激! 提前谢谢你
那是因为 threshold
是您的数字格式字符串的一部分。基本上引号内的所有内容都不会被 VBA 触及 - 除了告诉 VBA 在字符串中使用引号字符而不是结束字符串的双引号。
要将变量的内容放入字符串中,请使用字符串连接。这是在 VBA 中使用“&”运算符完成的:
.NumberFormat = "[=0]---;[<" & threshold & "] ""a.C."";0.0 "
但是,由于四舍五入,Double 可能有点令人讨厌,因此最好使用格式命令以所需的形式输出它(例如,小数点后 2 位)。使用一个中间变量通常是个好主意,您可以通过调试器轻松检查它:
Dim myNumberFormat as string
myNumberFormat = "[=0]---;[<" _
& format(threshold, "0.00") _
& "] ""a.C."";0.0 "
.NumberFormat = myNumberFormat