Excel VBA:获取单元格的值,与单元格的格式无关

在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

A1A2具有相同的基础值,但B1B2没有,即使它们都是使用A1A2value方法计算的

A3=A1=A2)中的表达式正在访问A1A2的实际基础值。如何在VBA中访问这些值

它最初对我来说也是如此,因为我在输入公式后添加了格式

重新编辑B2

要获取基础值,需要使用VALUE2属性,该属性似乎忽略了格式设置:

函数f(添加为字符串)
f=范围(地址)。值2
端函数

发表评论