在Excel VBA中,Range("A1").Value
应返回工作表上范围A1的基础值.但是如果单元格格式化为Accounting,我会得到不同的值.
如何获得单元格的实际基础价值?
工作表
创建一个新文档,在单元格中输入以下值:
正如您所期望的那样,A3会产生TRUE
.现在使用2个小数位将A2的格式更改为Accounting.A2现在读取$ 0.00
,但基础值仍然存在0.00001
,因此A3仍然存在TRUE
.
VBA
制作一个新模块并添加以下功能:
Function f(addr As String)
f = Range(addr).Value
End Function
Run Code Online (Sandbox Code Playgroud)
如您所见,这只是使用对象的Value
方法获取范围的值Range
.
工作表
回到工作表.输入以下值:
A1
并且A2
有相同的基本价值,但B1
并B2
没有,即使它们都计算使用Value
的方法A1
和A2
.
在表达式A3
(=A1=A2
)的访问的实际的基础值A1
和A2
.如何在VBA中访问这些值?
DJ.*_*DJ. 13
它最初对我来说也是正确的,因为我在输入公式后添加了格式.
重新编辑B2.
要获取基础值,您需要使用VALUE2属性,这似乎忽略了格式:
Function f(addr As String)
f = Range(addr).Value2
End Function
Run Code Online (Sandbox Code Playgroud)