簡體   English   中英

下標超出范圍,Excel VBA,嘗試在循環中創建數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM