下标超出范围,Excel VBA,试图在循环内创build一个数组

我试图循环遍历表单中的所有控件,每次它捕获一个Label时,Label的Tag元素被添加到数组中。

Dim labelCounter As Integer labelCounter = 0 Dim arrayTag() As String For Each ctl In Me.Controls Select Case TypeName(ctl) Case "Label" arrayTag(labelCounter) = ctl.Tag labelCounter = labelCounter + 1 End Select Next 

我不断收到下标超出范围的错误。 这里怎么了?

 Sub Tester() Dim labelCounter As Integer Dim arrayTag() As String Dim ct As String, ctl labelCounter = 0 ReDim arrayTag(0 To labelCounter) For Each ctl In Me.Controls ct = TypeName(ctl) If ct = "Label" Then If labelCounter > 0 Then ReDim Preserve arrayTag(0 To labelCounter) End If arrayTag(labelCounter) = ctl.Tag labelCounter = labelCounter + 1 End If Next 'Debug.Print Join(arrayTag, ",") End Sub 

我认为你唯一的问题是你创build了一个数组(arrayTag),没有指定它有多less个元素。 据我所知,创build一个数组时,你需要A.)指定它的元素数量,或B.)按照你的方式创build一个数组(使用空的括号),然后一旦你到达一个点在代码执行中你知道它有多less个元素。 我想你也可以ReDim Preserve更改数组的大小而不删除其内容。

 Dim labelCounter As Integer labelCounter = 0 Dim arrayTag(50) As String For Each ctl In Me.Controls Select Case TypeName(ctl) Case "Label" arrayTag(labelCounter) = ctl.Tag labelCounter = labelCounter + 1 End Select Next