在Excel VBA中,Range(“A1”)。Value应返回工作表上范围A1的基础值。但是如果单元格被格式化为记帐,我会得到一个不同的值
如何获取单元格的实际基础值
工作表
创建新文档时,在单元格中输入以下值:
- A1:0.00001
- A2:=A1
- A3:=A1=A2
正如您所期望的,A3的结果是TRUE。现在将A2的格式更改为Accounting,使用2位小数。A2现在读取的是$0.00,但基础值仍然是0.00001,因此A3仍然是TRUE
VBA
创建新模块并添加以下功能:
函数f(添加为字符串)
f=范围(地址)。值
端函数
如您所见,这只是使用range对象的value方法获取范围的值
工作表
回到工作表。输入以下值:
- B1:=f(“A1”)
- B2:=f(“A2”)
- B3:=B1=B2
A1和A2具有相同的基础值,但B1和B2没有,即使它们都是使用A1和A2的value方法计算的
A3(=A1=A2)中的表达式正在访问A1和A2的实际基础值。如何在VBA中访问这些值
它最初对我来说也是如此,因为我在输入公式后添加了格式
重新编辑B2
要获取基础值,需要使用VALUE2属性,该属性似乎忽略了格式设置:
函数f(添加为字符串)
f=范围(地址)。值2
端函数