在Excel VBA中,Range("A1").Value
应返回工作表上范围A1的基础值。但是,如果单元格被格式化为会计,我会得到不同的值。Excel VBA:获取单元格的值,与单元格的格式无关
我该如何获得细胞的实际潜在价值?
工作表
创建一个新的文件,在单元格中输入以下值:
- 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中访问这些值?
我使用的是Excel 2010,'B3'肯定会出现'FALSE'。 – Joe 2012-04-04 23:55:04
猜猜它不会重新计算,如果你只改变格式... – 2012-04-05 00:02:54