回覆列表
-
1 # 大大大-海
-
2 # 滴逃逃
原因:說明物件不存在或者陣列元素不存在。
1、舉個簡單的例子:工作表中沒有"1月"這個工作表,卻用Sheets("1月");陣列定義的是arr(1 to 10),卻用Arr(11),都會出現下標越界的提示。
2、然後改正後的程式碼如下:
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
End Sub
下標越界這個是VBA裡面的問題,主要指你輸入的命令值已經超過了它的邊界值即最值(最大最小)這個要根據具體情況具體解決:舉個例子:VBA中個二維陣列,arr(1 to 10,1 to 10),代表他可以儲存arr(x,y) (注: x取值 1到10,y取值1到10.)100個數據(或者物件);如果你讓x,y取了其他值,那麼系統就報錯,下標越界處理這類越界的問題有兩種方法:1、粗處理:定義一個比較大的陣列,保證控制元件足夠。弊端:佔記憶體;2、細處理:根據實際情況定義陣列大小,用redim 及時調整陣列的大小;以上例子是針對陣列的舉例;其他如excel只包含三個sheet,你程式碼出現sheets(4)也會報錯,告訴你下標越界。