1樓:匿名使用者
只能在定義的範圍內訪問陣列元素和集合成員。
此錯誤有以下的原因和解決方法:
引用了不存在的陣列元素.
下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。檢查陣列的宣告以確認其上界和下界。若使用的是重新指定範圍的陣列,應使用 ubound 和 lbound 函式來決定陣列訪問。
如果索引指定為變數,應檢查變數名的拼寫。
宣告陣列時沒有指定元素的數目。例如,下列的**就會導致此錯誤: dim myarray() as integer myarray(8) = 234 ' 導致錯誤 。
visual basic 並不會將沒有指定範圍的陣列自動設為 0 – 10。
相反必須使用 dim 或 redim 來指定陣列中元素的數目。
引用了不存在的集合成員。
試著使用 for each...next 結構代替指定元素下標。
使用速寫形式的下標,結果指定了錯誤的元素。
例如,當在集合上使用 ! 運運算元時,! 自動指定了一個鍵。
例如 object!keyname.value 和 object.item(keyname).value 是一樣的。
在此例中,集合中如果 keyname 表示一個錯誤鍵,錯誤就會產生。
若要改進此錯誤,在集合物件中使用正確的鍵名稱或索引。
2樓:匿名使用者
檢查檔案是否重新命名或者路徑是否修改,下標越界是因為找不到檔案所導致的
3樓:示琬蔡愷
下標越界這個是vba裡面的問題,主要指你輸入的命令值已經超過了它的邊界值即最值(最大最小)這個要根據具體情況具體解決:
舉個例子:vba中個二維陣列,arr(1
to10,1
to10),代表他可以儲存arr(x,y)(注:x取值
1到10,y取值1到10.)100個資料(或者物件);如果你讓x,y取了其他值,那麼系統就報錯,下標越界
處理這類越界的問題有兩種方法:
1、粗處理:定義一個比較大的陣列,保證控制元件足夠。弊端:佔記憶體;
2、細處理:根據實際情況定義陣列大小,用redim及時調整陣列的大小;
以上例子是針對陣列的舉例;其他如excel只包含三個sheet,你**出現sheets(4)也會報錯,告訴你下標越界。
excel 提示錯誤9,下標越界,怎樣解決
4樓:3047156926直召
在你的vba**中引用的下標不存在了,比如你原來有sheets(5)或者sheets("**5"),這**5不存在了或者名字改了;還有其他有引用下標的函式,下標出錯等等...
5樓:姓王的
你這段**寫得不簡潔,是錄製巨集改的吧。
workbooks.open (thisworkbook.path & "/" & i & ".xls")
這句應該有問題,「/」反向了。但不應該是「下標越界」的問題,具體哪句出現的問題呢?
sheets("w").select——這句如果迴圈開啟的某個檔案沒有工作表「w」,會出現下標越界
excel2016執行時出錯9,下標越界怎麼辦
6樓:文峰畫坊
1、引用了不存在的陣列元素:下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。
2、宣告陣列時沒有指定元素的數目:引用了不存在的集合成員。
3、使用速寫形式的下標,結果指定了錯誤的元素。
4、引用或操作的工作薄、工作表不存在。
7樓:
一般是sheets()出錯了
excel 為什麼 執行時錯誤9 下標越界
8樓:很多很多
excel中vba提示下標超界,說明物件不存在或者陣列元素不存在。
舉個簡單的例子:工作表中沒有"1月"這個工作表,卻用sheets("1月");陣列定義的是arr(1 to 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
end sub,就可以了
擴充套件資料:
vb中的陣列越界
引用了不存在的陣列元素。
下標可能比下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。檢查陣列的宣告以確認其上界和下界。若使用的是重新指定範圍的陣列,應使用 ubound 和 lbound 函式來決定陣列訪問。
如果索引指定為變數,應檢查變數名的拼寫。
宣告陣列時沒有指定元素的數目。例如,下列的**就會導致此錯誤:
dim myarray() as integer
myarray(8) = 234 ' 導致錯誤 9。
visual basic 並不會將沒有指定範圍的陣列自動設為 0 – 10。相反必須使用 dim 或 redim 來指定陣列中元素的數目。
引用了不存在的集合成員。
試著使用 for each...next 結構代替指定元素下標。
使用速寫形式的下標,結果指定了錯誤的元素。
9樓:余余
c:\users\騰\desktop\test.xlsx 這個檔名是否修改過或位置變動了,不在所指向的資料夾下?
10樓:陽光上的橋
是不存在msgsheetname這個名字的工作表,如果這個msgsheetname的值是整數,excel是不是以名稱、而是序號去找表表,你先顯示一下變數的值就明白了,例如:
msgbox msgsheetname
11樓:匿名使用者
出錯時,點除錯,開啟本地視窗,看下是哪個表出錯。
比如,出錯時顯示i為5,那麼檢查test5月表名中是否包含空格及其他會導致錯誤的情況。
或者,根本就沒有test5月這張表。
**沒看出問題
12樓:匿名使用者
excel提示下標越界是vba程式執行的一個錯誤提示,原因有以下幾個:
1、引用了不存在的陣列元素:下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。
2、宣告陣列時沒有指定元素的數目:引用了不存在的集合成員。
3、使用速寫形式的下標,結果指定了錯誤的元素。
4、引用或操作的工作薄、工作表不存在。
關於EXCEL列印的問題,如何解決excel超出列印範圍的問題
很明顯,你這是列印設定的問題。開啟頁面設定選項視窗 工作表,將 列印區域 限定為 a e 頂端標題行 限定為 1 1 參考附圖所示。這樣,超過一頁的內容會自動調整到第二頁列印,但這樣會有兩頁的內容,而不是你希望的一頁上有兩頁的內容,還需要進行以下設定 在印表機屬性上進行 單面列印多頁 如附圖所示。這...
非常急excel巨集,執行錯誤9,下標越界
我試過這個巨集了,能用。下標越界的原因應該是你的excel文件中沒有 不可刪 這個工作表。更改工作表中的名稱為不可刪或者更改巨集中 不可刪 為資料來源工作表的名稱,比如 sheet1 56666666666666 vba 執行時錯誤9 下標越界 錯誤9 下標越界 錯誤發生在 行 note works...
如何解決Excel中按比例分配的問題
截圖說明一下。如果是簡計算,直接用總數乘百分比。先按權重去整分配給前兩個,最後一個用總數減一下前兩個的合計就行了。如何用excel公式實現按比例分配獎勵 23000 a1 sum a a 有誤差 自己調整 要麼最後以後設定成 23000 sum b1 b row 1 建立兩列資料,一列為個人完成佔總...