我有一个名为"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