[英]Subscript out of range, Excel VBA, Trying to create an array within a loop
我試圖遍歷表單中的所有控件,並且每次捕獲到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
我認為您唯一的問題是您創建了一個數組(arrayTag)而未指定其中有多少個元素。 據我所記得,創建數組時,您需要要么A.)指定其中的元素數量,要么B.)按照您的方式創建數組(帶有空括號),然后在到達某個點后重新對其進行ReDim
在代碼執行中,您知道其中有多少個元素。 我認為您也可以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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.