簡體   English   中英

為什么會出現“下標超出范圍”錯誤?

[英]Why am I getting a “Subscript is out of range” error?

我在UserForm有以下代碼,該代碼在主模塊中的其他一系列進程的結尾附近調用,但是到達Me.GPListBox.List(iterI, 0) = Split (CCGPValues(key), " - ")(0)我收到一條錯誤消息,指出下標超出范圍。

Debug.PrintFor Each之前,控制台將輸出“ Jorge Cardona”。 這是拆分的第一部分。 CCGPValues(key)等於“ Jorge CCGPValues(key) $ 207.31”,但是當它在GPListBox中調用相同的拆分時,它將中斷。 為什么通過Debug.print運行時會發生這種情況?

    Dim key As Variant, iterI As Integer, iterX As Integer
    Debug.Print Split(CCGPValues(147), " - ")(0)
    For Each key1 In CCGPValues.Keys
            Me.GPListBox.AddItem
            Me.GPListBox.List(iterI, 0) = Split(CCGPValues(key), " - ")(0) 'Breaks here
            Me.GPListBox.List(iterI, 1) = Split(CCGPValues(key), " - ")(1)
            CCGPValuesCount = CCGPValuesCount + 1
            iterI = iterI + 1
    Next key1

您正在運行循環Key1For Each key1 In CCGPValues.Keys和你逝去的分割部分key= Split(CCGPValues(key), " - ")(0)

因此,沒有什么可split ,因此未初始化結果數組。 然后從空白數組嘗試讀取第一個元素。 所以子腳本錯誤。

Option Explicit避免了此類麻煩。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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