簡體   English   中英

使用VBA將單元格格式化為任意貨幣,而不考慮區域設置

[英]Format a cell as arbitrary currency regardless of locale, using VBA

這真的很煩我,因為它的工作方式似乎很不合邏輯。

我有一個宏來格式化單元格作為貨幣使用一些代碼來獲得貨幣符號。

這是涉及的代碼:

Dim sym As String
sym = reportConstants(ISOcode)
    'Just use the ISO code if there isn't a symbol available
    If sym = "" Then
    sym = ISOcode
    End If
With range(.Offset(0, 3), .Offset(3, 3))
.NumberFormat = sym & "#,##0;(" & sym & "#,##0)"
Debug.Print sym & "#,##0;(" & sym & "#,##0)"
End With

reportConstants是一個字典對象,貨幣符號定義為字符串。 例如reportConstants("USD") = "$" 這是在宏的早期定義的。

當宏運行時,它獲取ISO代碼,然后應使用相應的貨幣符號格式化單元格。

當我在一個實例中運行它時,ISO代碼是“USD” - 因此sym被定義為"$" - 但它仍然用井號(£)格式化單元格。 當我debug.print格式單元格字符串時,它顯示$#,##0;($#,##0)所以,只要我的語法正確,就應該在單元格中使用美元符號。 但它使用的是£符號。 (我正在運行英國版的excel,因此它可能默認為£-sign,但為什么呢?)

任何幫助非常感謝。

我剛剛錄制了一個宏來將格式設置為$ xx.xx並創建了這個: [$$-409]#,##0.00 看起來-409將貨幣本地化到特定國家; 它沒有它工作 - 嘗試將你的更改為.NumberFormat = "[$" & sym & "]#,##0.00"

Btw猜測我在發布后有點讀了你的問題;)Excel受到計算機區域設置的影響,因為貨幣,語言,日期...使用numberformat可以強制它保留你需要的標志。 如果是四舍五入的問題,您可以嘗試:在Excel 2010上,轉到文件 - 選項 - 高級,向下滾動到“計算此工作簿時”,然后單擊“顯示設置精度”並單擊“確定”。

試試這個:給出你的值是數字/整數/小數....

Range("a2").Style = "Currency"

或者你可以使用格式:

Format(value, "Currency")

Format(Range(a2).value, "Currency")

參考文獻:

http://www.mrexcel.com/forum/excel-questions/439331-displaying-currency-based-regional-settings.html

http://www.addictivetips.com/microsoft-office/excel-2010-currency-values/

(PS:我在手機上,你可以嘗試這兩個鏈接)

暫無
暫無

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

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