vba中的范围变量不接受基于指针的值

时间:2018-04-10 08:58:24

标签: excel-vba range vba excel

pointer是基地址A8,ref是在表格中导航。

错误:pointer在单元格A8中取值而不是地址$A$8;即使指针设置为字符串,它也会在第5行中导致“ type mismatch

Dim ref As Range, pointer As Range
Dim diff as Integer

Set pointer = Range("A8").Address
Set ref = pointer.Offset(diff, 0)

ref.Value = Date

2 个答案:

答案 0 :(得分:0)

您正在使用不同类型的变量混合不同类型的数据。

在您的代码中,您将Pointer定义为范围,因此行Set pointer = Range("A8").Address不正确,因为Range.Address返回字符串值。

所以只需将Set pointer = Range("A8").Address替换为Set pointer = Range("A8")

答案 1 :(得分:0)

澄清差异

  • Range("A8")属于Range类型,代表单元格A8 及其所有属性
  • Range("A8").Address的类型为String,代表单元格A8的地址,即" $ A $ 8"。
  • Range("A8").Value表示单元格的值。

所以你需要决定你想要什么。

例如.Offset(diff, 0)仅适用于范围,但不适用于地址。所以你可能想要使用Set pointer = Range("A8")。要访问pointer的地址,您可以使用pointer.Address