使用 Excel 2007+ VBA 和单元格的 NumberFormat 属性 格式化数字文本

Using Excel 2007+ VBA and a Cell's NumberFormat Property to Format Number Text

在连接文本字符串中使用 MsgBox and/or 显示相关数字时,我想使用 VBA 和单元格的格式。

我尝试使用单元格的 NumberFormat 属性 但得到的结果无法使用...

例如以下示例代码应告诉用户对标价高于成本 150% 的柠檬水收取 4.50 美元...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "I should charge " & Format(Range("a3").Value * 1.5, Range("a3").NumberFormat) & " for this lemonade."
End Sub

...结果...

显示有两种情况:第一种是未格式化的单元格;第二个是货币格式的单元格。我希望我的代码能够适应任何有效的数字格式,包括自定义格式。

只要使用美国区域设置,就可以使用Application.Text代替Format:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "I should charge " & Application.Text(Range("a3").Value * 1.5, Range("a3").NumberFormat) & " for this lemonade."
End Sub

例如。如果您没有美国设置,您仍然需要解决任何本地化的货币格式。