我有一个名为“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
答案 0 :(得分:5)
您永远不会将header
设置为对象。当您将header
声明为Collection时,它会指示编译器为Collection
对象保留空间,但实际上不会创建一个。{1}}。为了实例化对象,您需要执行以下操作:
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