VBA 陣列下標越界,VB 中下標的陣列越界

發布 科技 2024-06-27
5個回答
  1. 匿名使用者2024-01-30

    在Excel中,VBA指示下標越界,指示物件不存在或陣列元素不存在。

    舉個簡單的例子:工作表中沒有人"一月"但是,此工作表使用工作表("一月");陣列定義了 arr(1 到 10),但將使用 arr(11),並且下標將越界。

    簡單地說:越界下標是超出範圍的引號。

    1.當我們在Excel的VBA中輸入以下**並執行時,會出現“執行過程中錯誤9下標越界”的提示。 **下面:

    sub a()

    dim arr() as string

    arr(1) = 你好"

    end sub

    2.其實上面的“執行時錯誤9下標越界”是因為定義的動態陣列沒有確定維度和大小。 這個問題可以通過定義固定數量的維度和維度來解決,或者通過使用 redim 定義維度和維度來解決。

    更正後的**如下:

    sub a()

    dim arr() 定義了乙個動態陣列。

    dim i as integer

    redim arr(1 to 3) '定義乙個由 3 個元素組成的陣列並初始化該陣列。

    arr(1) =3

    arr(2) =4

    arr(3) =5'在下面的語句中,重新定義乙個包含 10 個元素的陣列,清除前面的元素,並重新分配新的儲存變數。

    redim arr(1 to 10)

    for i = 1 to 10

    arr(i) =i

    next i

    結束子,就是這樣。

  2. 匿名使用者2024-01-29

    如果你宣告了乙個陣列 arr(5),那麼只有 cryptofiber 有 arr(0) 到 arr(4) 並且 5 個元素可以正常訪問,如果你使用缺少的載體 arr(5) 來訪問第 6 個元素,你會得到乙個越界下標錯誤。

  3. 匿名使用者2024-01-28

    1.在工作表中設定按鈕並將其分配給巨集。

    2.在VBA裝置中輸入以下**。 湮滅(此 ** 表示整個區域的單元格,如果它是乙個空格,則隱藏空間所在的整個列。

    3、操作時折頭有問題,下標越界,無法執行。

    4.**中的“sheet1”工作表根本不是,因為工作表的標籤名稱是“chart”,所以**執行時找不到"sheet1"工作表,所以提示下標越界。

    5.點選異常提示下方的“除錯”按鈕,將埋數中的“sheet1”改為“chart”,然後點選按鈕執行巨集,下表中正常操作,無越界提示。

    筆記:

    儘管 Excel 提供了大量的使用者介面功能,但它仍然保留了第乙個電子表格軟體 VisicalC 的特徵:行和列組成單元格,資料、與資料相關的公式或對其他單元格的絕對引用儲存在單元格中。

  4. 匿名使用者2024-01-27

    引用了不存在的陣列元素。

    下標可能大於或小於下標範圍,或者應用程式這一側的陣列可能沒有指定的範圍。 檢查陣列的宣告以確認其上限和下限。 如果使用的是重新作用域的陣列,則應使用 ubound 和 lbound 函式來確定陣列訪問。

    如果將索引指定為變數,則應檢查變數名稱的拼寫。

    宣告陣列時未指定元素數。 例如,以下 ** 將導致此錯誤:

    dim myarray() as integermyarray(8) = 234 '導致錯誤 9。

    Visual Basic 不會自動將沒有指定範圍的陣列設定為 0 10。 相反,必須使用 dim 或 redim 來指定陣列中的元素數。

    引用不存在的集合成員。

    嘗試使用每個...。next 結構,而不是指定元素下標。

    使用下標的簡寫形式,結果是指定了錯誤的元素。

    例如,在集合上使用 !時運算元!系統會自動分配乙個金鑰。

    例如,object!這是一樣的。 在這種情況下,如果集合中的鍵名表示不正確的鍵,則會發生錯誤。

    若要改進此錯誤,請在集合物件中使用正確的鍵名或索引。

    詳細資訊以選擇相關專案並按 F1 鍵。

  5. 匿名使用者2024-01-26

    1.這句話有誤:,應該是:。 但是,即使你糾正了錯誤,這句話也可能“越界下標”,例如,如果有乙個只有 3 個表格的工作簿,你就會以這種方式越界。

    2.這個 arr1 是乙個變體 wither,不一定是陣列。 例如,如果 f 列的單元格 F2 中有資料,而 F 列中沒有資料,則 arr1 不是二維陣列,而是僅包含乙個值(F2 的值)的變數; 僅當 F 列中從 F2 向下的 1 個以上資料時,arr1 才是二維陣列。

    3.當 arr1 不是陣列時,您可以通過呼叫 sail removal 來越線,如下所示:arr1(j)。

    即使 arr1 是乙個陣列,如果你這樣稱呼它,你也會越界,因為 arr1 是乙個“二維陣列”,不能像一維陣列一樣使用。 也就是說,無論 arr1 是否為陣列,arr1(j) 都是越界的。

    4.因為 arr1 和 arr2 的大小都一樣,所以只有乙個表示一列資料,另乙個旅冰雹表示一行資料。 因此,當您調整大小時,就是這樣:

    ubound(arr1),1) 而不是 (ubound(arr1)+1,1)。

相關回答
7個回答2024-06-27

退出while的條件由rs條數控制,但記錄數可能超過x陣列的上限,導致j=j+1越界,所以j=j+1應該控制: >>>More

16個回答2024-06-27

在VB中,陣列第乙個元素的下標預設值為0,即c(8)最後乙個元素的下標為7,沒有8,i=8當然下標越界了! >>>More

22個回答2024-06-27

陣列和指標之間的區別:

陣列名稱確實表示指向陣列第乙個位址的指標,但是這個指標很特殊,它的值(指標的值是指標指向的位址)不能被覆蓋,只能覆蓋它指向的內容,換句話說,陣列名稱只能指向陣列的第乙個位址, 如果有陣列 char a;那麼如果 a = a+1; 這是乙個甚至無法編譯的錯誤。 對於普通指標,例如,可能有乙個陣列 char a; 然後定義乙個字元 *p = a; 然後使用 p = p+1 是有效的,這意味著指標 p 指向 &a[1]。 >>>More

4個回答2024-06-27

如果你不越過界線,你就不會崩潰。

15個回答2024-06-27

這是關於女王和公尺羅利伯爵的,公尺羅利的右翼一半受損,只剩下另一半,所以他通常用斗篷遮住它,不能飛,所以他只能用雪鴞作為坐騎。 估計當時是公尺羅利伯爵越過邊界來到了春之結界,翅膀受損,無法**,最後兩人只能分開。