在 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 中访问这些值?A1A2