簡體   English   中英

如何在 Excel VBA 中對標簽進行條件格式設置

[英]How to do conditional formatting of a label in 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) 也正確格式化負數。

我不確定format命令是否支持這種條件數字格式,但您可以輕松地將其替換為:

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

TEXT工作表函數似乎尊重您最初指定的格式,您可以通過Application.WorksheetFunction在 VBA 中使用它。

Application.WorksheetFunction.Text(812, "[>=1000000] $#,##0.0,,""M"";[>0] $#,##0.0, ""K"";General")

FORMATVBA 參考不包括條件數字格式,但它確實有一個數字格式部分,所以我希望條件數字格式無效 - 盡管我發現使用它默認為指定格式中的第一個模式很有趣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM