-
在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
結束子,就是這樣。
-
如果你宣告了乙個陣列 arr(5),那麼只有 cryptofiber 有 arr(0) 到 arr(4) 並且 5 個元素可以正常訪問,如果你使用缺少的載體 arr(5) 來訪問第 6 個元素,你會得到乙個越界下標錯誤。
-
1.在工作表中設定按鈕並將其分配給巨集。
2.在VBA裝置中輸入以下**。 湮滅(此 ** 表示整個區域的單元格,如果它是乙個空格,則隱藏空間所在的整個列。
3、操作時折頭有問題,下標越界,無法執行。
4.**中的“sheet1”工作表根本不是,因為工作表的標籤名稱是“chart”,所以**執行時找不到"sheet1"工作表,所以提示下標越界。
5.點選異常提示下方的“除錯”按鈕,將埋數中的“sheet1”改為“chart”,然後點選按鈕執行巨集,下表中正常操作,無越界提示。
筆記:
儘管 Excel 提供了大量的使用者介面功能,但它仍然保留了第乙個電子表格軟體 VisicalC 的特徵:行和列組成單元格,資料、與資料相關的公式或對其他單元格的絕對引用儲存在單元格中。
-
引用了不存在的陣列元素。
下標可能大於或小於下標範圍,或者應用程式這一側的陣列可能沒有指定的範圍。 檢查陣列的宣告以確認其上限和下限。 如果使用的是重新作用域的陣列,則應使用 ubound 和 lbound 函式來確定陣列訪問。
如果將索引指定為變數,則應檢查變數名稱的拼寫。
宣告陣列時未指定元素數。 例如,以下 ** 將導致此錯誤:
dim myarray() as integermyarray(8) = 234 '導致錯誤 9。
Visual Basic 不會自動將沒有指定範圍的陣列設定為 0 10。 相反,必須使用 dim 或 redim 來指定陣列中的元素數。
引用不存在的集合成員。
嘗試使用每個...。next 結構,而不是指定元素下標。
使用下標的簡寫形式,結果是指定了錯誤的元素。
例如,在集合上使用 !時運算元!系統會自動分配乙個金鑰。
例如,object!這是一樣的。 在這種情況下,如果集合中的鍵名表示不正確的鍵,則會發生錯誤。
若要改進此錯誤,請在集合物件中使用正確的鍵名或索引。
詳細資訊以選擇相關專案並按 F1 鍵。
-
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)。
陣列和指標之間的區別:
陣列名稱確實表示指向陣列第乙個位址的指標,但是這個指標很特殊,它的值(指標的值是指標指向的位址)不能被覆蓋,只能覆蓋它指向的內容,換句話說,陣列名稱只能指向陣列的第乙個位址, 如果有陣列 char a;那麼如果 a = a+1; 這是乙個甚至無法編譯的錯誤。 對於普通指標,例如,可能有乙個陣列 char a; 然後定義乙個字元 *p = a; 然後使用 p = p+1 是有效的,這意味著指標 p 指向 &a[1]。 >>>More
這是關於女王和公尺羅利伯爵的,公尺羅利的右翼一半受損,只剩下另一半,所以他通常用斗篷遮住它,不能飛,所以他只能用雪鴞作為坐騎。 估計當時是公尺羅利伯爵越過邊界來到了春之結界,翅膀受損,無法**,最後兩人只能分開。