集合上的运行时错误 91



我有一个名为"rng1"的范围,第一行是标题。我想有一个collection来存储所有变量名称。鉴于有 5 个变量。

Sub Main()                           
    Dim rng As Range
    Set rng = Range("rng1")
    Dim header As Collection
    For i = 1 To 5
        header.Add Item:=Cells(rng.Row, rng.Column).Offset(0, i - 1).Value
    Next i
    End Sub

当我使用代码时,我能够显示变量名称MsgBox Cells(rng.Row, rng.Column).Offset(0,0).Value

您永远不会为对象设置header。将header声明为 Collection 时,它会指示编译器为 Collection 对象保留空间,但实际上不会创建一个。 为了实例化对象,您需要执行以下操作:

Set header = New Collection

如果要创建实例(而不是从现有实例进行赋值),该语言提供了一些快捷方式语法,并允许您在一行上组合声明和实例化:

Dim header As New Collection

因此,完整代码如下所示:

Sub Main()                           
    Dim rng As Range
    Set rng = Range("rng1")
    Dim header As New Collection
    For i = 1 To 5
        header.Add Item:=Cells(rng.Row, rng.Column).Offset(0, i - 1).Value
    Next i
End Sub

最新更新