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

Joe*_*Joe 10 excel vba

在Excel VBA中,Range("A1").Value应返回工作表上范围A1的基础值.但是如果单元格格式化为Accounting,我会得到不同的值.

如何获得单元格的实际基础价值?

工作表

创建一个新文档,在单元格中输入以下值:

  • A1:0.00001
  • A2:= A1
  • A3:= A1 = A2

正如您所期望的那样,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.

工作表

回到工作表.输入以下值:

  • B1:= f("A1")
  • B2:= f("A2")
  • B3:= B1 = B2

A1并且A2有相同的基本价值,但B1B2没有,即使它们都计算使用Value的方法A1A2.

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

DJ.*_*DJ. 13

它最初对我来说也是正确的,因为我在输入公式后添加了格式.

重新编辑B2.

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

Function f(addr As String)
    f = Range(addr).Value2
End Function
Run Code Online (Sandbox Code Playgroud)

  • 哦,这是偷偷摸摸的. (2认同)