在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
正如你所看到的,这只是使用Range
对象的Value
方法来获取范围的值。
工作表
回到工作表。输入以下值:
- B1:=f("A1")
- B2:=f("A2")
- B3:=B1=B2
A1
和A2
具有相同的基础值,但是B1
和B2
不具有,即使它们都使用了A1
和A2
的Value
方法进行计算。
A3
中的表达式(=A1=A2
)正在访问A1
和A2
的实际基础值。如何在VBA中访问这些值?