首页 > 解决方案 > 范围变量(重新)赋值

问题描述

我有一个检查范围:

Dim myrange
myrange = Worksheets(1).Range("A1")

我想获得行+1的范围

 myrange = Worksheets(1).Range("A1").Offset(1, 0)

 myrange =myrange.Offset(1, 0)

抛出错误 424 需要对象


我也尝试定义我的变量

 Dim myrange As Range

但随后在赋值时抛出错误 91 对象变量或未设置块变量

标签: excelvbavariables

解决方案


Dim myrange
myrange = Worksheets(1).Range("A1")

在上面myrange被声明为一个变体,而不是一个范围。当您分配它时Worksheets(1).Range("A1"),您分配的是单元格的值,而不是设置范围对象。以下对其进行更正。

Dim myrange as range
SET myrange = Worksheets(1).Range("A1")

您可以从范围对象偏移,但不能从范围的值。一旦myrangeSet,以下应该工作。

Set myrange = myrange.Offset(1, 0)

myrange现在设置为Worksheets(1).Range("A2"). 这可以仔细检查,

Debug.Print myrange.Address(0, 0, external:=true)

推荐阅读