2017-08-24 72 views
0

當數據爲數千和數百萬時,我需要在「$ K」和「$ M」中有條件地格式化標籤值。我一直在使用以下格式,它們分別在Excel單元格($#,## 0.0,「K」)和($#,## 0.00,「M」)中工作得非常好,這在我使用它時不起作用格式化使用VBA與下面的代碼標籤標題:如何在Excel 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 

任何指針

+0

爲什麼您使用CSTR()嗎?爲什麼不是val()? – Sixthsense

+0

@Sixthsense dblInvestmentVal變量是一個雙變量,我之前使用了一些連接,因此將其轉換爲字符串。我剛剛嘗試過使用Val()以及現在,不影響結果 – hbabbar

+0

dblInvestmentVal textbox的值是什麼? – Sixthsense

回答

1

你可以使用一個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)也可以正確格式化negativ數字。

+0

完美。如果我理解正確,我有一個問題,因爲條件的語法不正確? – hbabbar

0

我不知道這條件數字格式是由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