在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