在 Excel VBA 中,Range("A1").Value
应返回工作表上范围 A1 的基础值。但是,如果单元格格式为“会计”,我会得到不同的值。
如何获得单元格的实际基础价值?
工作表
创建一个新文档,在单元格中输入以下值:
- A1:0.00001
- A2:=A1
- A3:=A1=A2
如您所料,A3 结果为TRUE
. 现在将 A2 的格式更改为会计,使用 2 个小数位。A2 现在读取$ 0.00
,但基础值仍然存在0.00001
,所以 A3 仍然存在TRUE
。
VBA
创建一个新模块并添加以下功能:
Function f(addr As String)
f = Range(addr).Value
End Function
如您所见,这只是使用对象的Value
方法获取范围的值Range
。
工作表
回到工作表。输入以下值:
- B1: =f("A1")
- B2: =f("A2")
- B3:=B1=B2
A1
并且A2
具有相同的基础价值,但B1
和B2
不具有相同的基础价值,即使它们都是使用 和 的Value
方法计算A1
的A2
。
A3
( ) 中的表达式正在访问and=A1=A2
的实际基础值。如何在 VBA 中访问这些值?A1
A2