如何在Excel VBA中对标签进行条件格式化
当数据为数千和数百万时,我需要在“$ K”和“$ M”中有条件地格式化标签值。 我一直在使用以下格式,在Excel单元格($#,## 0.0,“K”)和($#,## 0.00,“M”)中绝对正常,这不工作,当我使用它使用VBA使用以下代码格式化标签标题:
lblInvestmentValue.Caption = Format(CStr(dblInvestmentVal), "[>=1000000] $#,##0.0,,""M"";[>0] $#,##0.0, ""K"";General")
在使用这个我得到以下输出
dblInvestmentVal Caption Expected Caption 812 $812.0M $812 8280119 $8,280,119.0M $8.29M 91281 $12,367.0M $12.4K
任何指针
您可以使用IIF语句。
lblInventmentValue.Caption = IIF(Abs(dblInvestmentVal) >= 1000000, Format(dblInvestmentVal / 1000000, "$#,##0.0,,""M"""),IIF(Abs(dblInvestmentVal) >= 1000, Format(dblInvestmentVal / 1000, "$#,##0.0,,""K"""),Format(dblInvestmentVal, "$#,##0.0")))
语句使用Abs(dblInventmentVal)也可以正确地格式化负数。
我不确定格式化命令是否支持这种有条件的数字格式,但您可以轻松地将其replace为:
Function ConditionalFormatNumber(n As Double) As String If n > 1000000 Then ConditionalFormatNumber = Format(n / 1000000, "$#,##0.00,,""M""") ElseIf n > 1000 Then ConditionalFormatNumber = Format(n / 1000, "$#,##0.00, ""K""") Else ConditionalFormatNumber = Format(n, "$#,##0.0") End If End Function