excel VBA總是提示錯誤9下標越界

2021-05-01 08:49:54 字數 5690 閱讀 2663

1樓:姓王的

你這段**寫得不簡潔,是錄製巨集改的吧。

workbooks.open (thisworkbook.path & "/" & i & ".xls")

這句應該有問題,「/」反向了。但不應該是「下標越界」的問題,具體哪句出現的問題呢?

sheets("w").select——這句如果迴圈開啟的某個檔案沒有工作表「w」,會出現下標越界

vba執行時錯誤9,下標越界

2樓:很多很多

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 結構代替指定元素下標。

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

3樓:匿名使用者

你工作薄名稱的字尾不對,應該是。xlsx才對,還有如果是2007以上版本,有巨集的工作薄字尾為.xlsm。才對,你試著改下這裡試試

這樣才對

4樓:匿名使用者

所謂下標越界就是沒有找到的意思,這裡的與下標有關的就是工作簿workbooks、工作表sheets和單元格range了,這3者之一沒有找到都會提示下標越界。workbooks必須開啟了工作簿才能找得到,在這種前提下sheets必須存在才行,range只要語法不錯一般不會有問題。當然sheets最好寫成worksheets。

excel 提示錯誤9,下標越界,怎樣解決

5樓:3047156926直召

在你的vba**中引用的下標不存在了,比如你原來有sheets(5)或者sheets("**5"),這**5不存在了或者名字改了;還有其他有引用下標的函式,下標出錯等等...

6樓:姓王的

你這段**寫得不簡潔,是錄製巨集改的吧。

workbooks.open (thisworkbook.path & "/" & i & ".xls")

這句應該有問題,「/」反向了。但不應該是「下標越界」的問題,具體哪句出現的問題呢?

sheets("w").select——這句如果迴圈開啟的某個檔案沒有工作表「w」,會出現下標越界

vba 執行時錯誤9 下標越界

7樓:兄弟連教育北京總校

錯誤9 下標越界」錯誤發生在**行「note = worksheets("feuil1").range(cells(g, i), cells(g, i)).value」,這裡的引用「worksheets("feuil1")」是最易發生錯誤的,引用的表名「feuil1」必須是「name」屬性值而不是「名稱」屬性值,也就是應該是編輯器的物件瀏覽器裡「microsoft excel」物件的括號裡的值,同時也是**介面裡的工作表標籤的名稱。

順便說一下,後面還有一些其他錯誤(比如「cells(g, i).value <> ""」這個引用錯誤,會導致執行時錯誤1004「應用程式定義或物件定義錯誤」)。

excel vba 執行錯誤「9」 下標越界

8樓:

excel提示下標越界是vba程式執行的一個錯誤提示,原因有以下幾個:1、引用了不存在的陣列元素:下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。

2、宣告陣列時沒有指定元素的數目:引用了不存在的集合成員。3、使用速寫形式的下標,結果指定了錯誤的元素。

4、引用或操作的工作薄、工作表不存在。

9樓:adc大神

j=array(1,1) 加最上面

10樓:士萍和憶遠

將 cells(i,4)=

right(cells(i,

3).hyperlinks(1).screentip,6)語句改為:

ifcells(i,

3).hyperlinks.count

> 0then

cells(i,4)=

right(cells(i,

3).hyperlinks(1).screentip,6)end

if理由:當第三列單元格內容不為空或「款式」時,若該單元格不包含任何超連結,則返回錯誤,因此增加一個判斷語句,該單元格的超連結個數大於等於1時,才可以顯示螢幕提示的後六個文字,否則跳過。

11樓:很多很多

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 結構代替指定元素下標。

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

excel 為什麼 執行時錯誤9 下標越界

12樓:很多很多

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 結構代替指定元素下標。

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

excel vba提示424錯誤「要求物件」

這樣可否?不是很清楚你的要求。private sub commandbutton1 click textbox2.text 清空文字框2dim txt1len as integerdim str1 as string,str2 as stringtxt1len len textbox1.value ...

python提示錯誤python提示錯誤invalidsyntax

python提示錯誤 baiinvalid syntax時因為 python 2.x升級到python 3.x,duprint函式的語zhi法變化了,所以用daopython 2.x的print函式的 放在python 3.x中執行版,結權 果就出現了print函式的 syntaxerror inv...

硬碟錄影機總是提示硬碟錯誤,是何原因

可能硬碟壞了。可以先進入選單,用超級管理員 admin 使用者進去,試著格式化一下這塊硬碟。格式化完成後重啟硬碟錄影機。看是否正常。如果還提示硬碟錯誤,可以把這塊硬碟拆下來,接到電腦上格式化一次,再裝上試試,如果還不行,那你就得換一塊硬碟。部分錄影機裡面有一個地方需要設定硬碟數量,這個地方的數量要和...