使用 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
例如。如果您没有美国设置,您仍然需要解决任何本地化的货币格式。
在连接文本字符串中使用 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
例如。如果您没有美国设置,您仍然需要解决任何本地化的货币格式。