Excel如何解決下標越界問題,Excel 提示錯誤9,下標越界,怎樣解決

2022-03-22 00:18:59 字數 3703 閱讀 2687

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 建立兩列資料,一列為個人完成佔總...