如果在单元格区域中设置了自定义数字格式,您可能希望将单元格自定义数字格式的显示结果作为单元格的值。
示例
在下图所示的数据列表中,单元格区域 B2:B10
设置的数字格式为 G/通用格式"元"!/"斤"
,例如,如果单元格 B2
的值为 4
,此时显示的结果即为 4元/斤
,这只是改变了显示结果,单元格的值还是 4
,就跟每天穿不同的衣服一样,人没变,只是衣服变了。
如果您希望将单元格的值转为显示数字格式的显示结果,即将 4
转化为 4元/斤
,可以使用下面 VBA 代码:
'---------------- 模块 ----------------
Sub NumberFormat2Value()
Dim rng As Range
For Each rng In Range("B2:B10")
With rng
.Value = .Text
End With
Next
End Sub
其中 Range.Value 属性返回单元格的数值或公式结果。
Range.Text 属性返回的是显示在单元格上的文本,包括格式化信息,即我们在单元格中所看到的文本。
Range.Text 属性和 Range.Value 属性的差异
以下是一个简单的例子来说明 Range.Text
属性和 Range.Value
属性的差异:
Sub RangeExample()
Dim rng As Range
Set rng = Range("A1")
'将数值赋给单元格
rng.Value = "12345"
'修改单元格的格式,不影响Range.Value的值
rng.NumberFormat = "#,##0.00_ "
'获取单元格的文本值
Dim textValue As String
textValue = rng.Text
'获取单元格的数值或公式结果
Dim numericValue As Variant
numericValue = rng.Value
'在消息框中显示文本值和数值
MsgBox "文本值: " & textValue & vbNewLine & _
"数值: " & numericValue
End Sub
在上述代码中,我们将数值 12345
赋给了单元格 A1
。
接着修改了单元格 A1
的格式,并不影响 Range.Value
的值。
然后,我们使用 Range.Text
属性将该单元格的文本值存储在 textValue
变量中,使用 Range.Value
属性将该单元格的数值或公式结果存储在 numericValue
变量中。
最后,我们通过消息框将 textValue
和 numericValue
的值显示出来,以便您可以观察它们的差异。
运行结果如下:
文本值: 12,345.00
数值: 12345