即使设置了“NumberFormat”,单元格值也被视为文本

时间:2013-12-19 15:31:01

标签: vba excel-2007 number-formatting

我有一个从表单输出各种数据的Sub。其中一些数据必须是货币,格式如下。

但是,尽管输出此值实际上确实为单元格设置了正确的数字格式,但内容无法正确显示。相反,它们显示为带有警告Number stored as text的标准文本。

我确实可以选择Convert to number,但我找不到通过VBA执行此操作的方法(录制宏时进行更改不会产生任何结果)。

如何解决此问题?感谢。

With Selection
    .Value = Form.txtMonthlyCost
    .NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
End With

1 个答案:

答案 0 :(得分:2)

由于您的数据存储为文本,因此您必须转换VBA代码中的DataType

With Selection
    .Value = CCur(valueOr(Form.txtMonthlyCost)) 'Convert text to currency Format
    .NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
End With
.....
Public Function valueOR(val AS Variant, Optional dataType As String = "Number") AS Variant
     If isNull(val) then
         SELECT CASE dataType
             Case "Number"
                 val = 0
             Case "String"
                 val = ""
         End SELECT
     End If
     valueOR = val
End Function

另外知道如果提交null值会抛出错误,所以我添加了代码来处理它。我使用它的扩展版本来处理大多数数据类型,但这应该足以满足您的需求。