vba執行下標越界,錯誤型別,vba執行下標越界,錯誤型別

2022-05-20 14:24:34 字數 5829 閱讀 9691

1樓:匿名使用者

目測 sheet2 **名稱不存在

其餘不清楚

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樓:匿名使用者

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

vba問題「提示執行時錯誤9 下標越界」 100

4樓:不想起名字了

修改你相關行

從第四行開始

dim bw as workbook

set wb=workbookk.open("c:\每日溼貨報表.xls")

wb.worksheets("中創kfc入庫").cells.delete shift:=xlup

wb.worksheets("ph溼貨入庫單").cells.delete shift:=xlup

wb.worksheets("每日溼貨出貨重量").cells.delete shift:=xlup

你的程式出錯是sheets(....)預設的是從 當前工作簿中找

你應該不用預設值,用全限定符

從上面**看,你是從錄製的巨集修改的

中間還有很多select,這些都不用

5樓:匿名使用者

是不是有多個工作簿,你沒有指定工作簿吧?

excel巨集執行時,提示錯誤9 ,下標越界

6樓:陽光上的橋

你的語句有三種可能造成下標越界,一是workbooks("itemmaster"),如果沒有itemmaster檔案開啟會造成報錯,另外,一般我們是寫workbooks("itemmaster.xls")

二是.sheets("sheet1"),如果工作簿沒有名為"sheet1"的表,會造成下標越界

三是cells(gyou1, 1).value,如果gyou1的值不是有效的行(例如小於0或者超過表的最大行數),會造成下標越界

具體是什麼造成,需要除錯。

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執行時錯誤'9'下標越界

8樓:余余

c:\users\騰\desktop\test.xlsx 這個檔名是否修改過或位置變動了,不在所指向的資料夾下?

9樓:excel小奇

excel提示下標越界是vba程式執行的一個錯誤提示,原因有以下幾個:

1、引用了不存在的陣列元素:下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。

2、宣告陣列時沒有指定元素的數目:引用了不存在的集合成員。

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

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

10樓:談筱

"c:\users\騰\desktop\test.xlsx"檔案是否在存在

11樓:陽光上的橋

你的語句有三種可能造成下標越界,一是workbooks("itemmaster"),如果沒有itemmaster檔案開啟會造成報錯,另外,一般我們是寫workbooks("itemmaster.xls")

二是.sheets("sheet1"),如果工作簿沒有名為"sheet1"的表,會造成下標越界

三是cells(gyou1, 1).value,如果gyou1的值不是有效的行(例如小於0或者超過表的最大行數),會造成下標越界

具體是什麼造成,需要除錯。

12樓:匿名使用者

有可能是陣列,超過上屆導致的

報錯的時候,建議樓主選擇除錯,

然後會在報錯的一行**顯示黃色底色吧

滑鼠放到各個變數上看看,到底是哪個出的問題

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

13樓:

你改成m=evlauate("公式")

14樓:端蒙洋贊怡

sheet1看看是否此名稱的工作表不錯在!或者大小寫應該是sheet1

vba執行顯示 執行時錯誤「9」 下標越界

15樓:匿名使用者

有可能是陣列,超過上屆導致的

報錯的時候,建議樓主選擇除錯,

然後會在報錯的一行**顯示黃色底色吧

滑鼠放到各個變數上看看,到底是哪個出的問題

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

16樓:

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

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

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

17樓:adc大神

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

18樓:士萍和憶遠

將 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時,才可以顯示螢幕提示的後六個文字,否則跳過。

19樓:很多很多

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

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

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

錯誤9 下標越界 錯誤發生在 行 note worksheets feuil1 range cells g,i cells g,i value 這裡的引用 worksheets feuil1 是最易發生錯誤的,引用的表名 feuil1 必須是 name 屬性值而不是 名稱 屬性值,也就是應該是編輯器...

定義多維陣列下標越界,陣列下標越界是怎麼回事啊?

使用 preserve,只能調整陣列最後一維的大小。dim p as byte redim preserve p 1,3 redim preserve p 1,4 或。dim p as byte redim p 3,3 redim p 2,4 都是正確的。只有上面2種定義是正確的,這是vb規定的。解...

ecel用vba時出現執行錯誤,excel用vba時出現執行錯誤6 溢位,請幫忙看下我的程式是不是有問題

dim語句中的integer都改為bailong,因為integer正數最大為du32767 另外,大量迴圈應zhi該考dao 慮將 讀入陣列,用陣列參 內與迴圈,提高 容速度。比如使用語句 a1 worksheets 樣本1 usedrange 則生成a1陣列,a1 i,1 就相當於cells i...