如何在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