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

2021-05-06 04:26:31 字數 5788 閱讀 6069

1樓:伊秀榮夙靜

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

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

三是cells(gyou1,

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

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

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

2樓:陽光上的橋

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

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

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

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

我的excel巨集出了問題,執行時錯誤9,下標越界,請各位大俠幫助,謝謝!

3樓:萬年金剛鑽

請在立即視窗輸入如下命令顯示工作簿物件的name:

顯示的內容才是你的當前工作簿的名專稱。。

。因屬為名稱被改掉了

如我附件所示,thisworkbook被改名為:itisrenamed

4樓:excel技術服務

你的工作簿物件裡面沒有了thisworkbook

這個模組

5樓:濤略不凡

把文件發給我幫您看一下,[email protected]

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

6樓:匿名使用者

在提示下標越界時,點「除錯」,會開啟vba**視窗,看一下是在哪個語句上出現錯誤,此時,將滑鼠放在錯誤語句上,可以顯示出錯誤變數的「當前值」。由於這個**是針對你的指定工作表的,所以在出現錯誤時要結合你的**來分析錯誤原因。

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樓:很多很多

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樓:堯宵雷經義

vb在使用陣列前必須指定陣列的大小,一種辦法是在定義時確定大小,如:dim

inputdata(10)

assingle

另一種是動態定義,宣告不用修改,如在出錯語句前加一句:

redim

inputdata(10)

assingle

10樓:餘餘

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

11樓:陽光上的橋

是不存在msgsheetname這個名字的工作表,如果這個msgsheetname的值是整數,excel是不是以名稱、而是序號去找表表,你先顯示一下變數的值就明白了,例如:

msgbox msgsheetname

12樓:匿名使用者

出錯時,點除錯,開啟本地視窗,看下是哪個表出錯。

比如,出錯時顯示i為5,那麼檢查test5月表名中是否包含空格及其他會導致錯誤的情況。

或者,根本就沒有test5月這張表。

**沒看出問題

13樓:匿名使用者

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

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

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

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

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

14樓:

你沒有附件上來。。。沒法試。

下面三條語句有相同的功能,使sheet1成為當前活動表

sheets("sheet1").select '錯誤,此種方法在excel2007中出錯,但一些資料顯示可以這樣使用**名sheet1來引用

sheets("abc").select '正確,此方法中的abc是工作表標籤名稱,由於此名稱可能被修改,所以在vba巨集程式中不贊成使用

sheets(1).select '正確,此方法中的數字序號是在excel工作簿下實際看到的工作表排列順序序號,在巨集程式中不贊成使用

sheets(sheet1.name).select '正確,此方法使用**名sheet1的name屬性來引用,適合在vba巨集程式中使用

希望對你有所幫助~

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

15樓:很多很多

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

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

16樓:匿名使用者

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

這樣才對

17樓:匿名使用者

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

非常急~excel 巨集,執行錯誤9,下標越界.

18樓:匿名使用者

我試過這個巨集了,能用。

下標越界的原因應該是你的excel文件中沒有「不可刪」這個工作表。更改工作表中的名稱為不可刪或者更改巨集中「不可刪」為資料來源工作表的名稱,比如「sheet1」。

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

vb在使用陣列前必須指定陣列的大小,一種辦法是在定義時確定大小,如 dim inputdata 10 as single另一種是動態定義,宣告不用修改,如在出錯語句前加一句 redim inputdata 10 as single 很明顯,cells 1,2 肯定不會越界,應該是sheets cal...

excel選項中已啟用巨集但執行時顯示巨集被禁用

有可能是這個office版本不完整,建議重灌office excel巨集已被禁用解決方法 單擊 office 按鈕 然後單擊 excel 選項 依次單擊 信任中心 回 信任中心設定 和 巨集答設定 單擊所需的選項。禁用所有巨集,並且不通知 如果您不信任巨集,請單擊此選項。此時,將禁用文件中的所有巨集...

VISTA魔獸世界執行時遇到的錯誤

看 不是遊戲程式的報錯,也不是vista系統程式報錯。怎麼看也是什麼木馬之類的東西被防毒軟體殺殘疾後留下垃圾,具體什麼就不好說了。重灌是最古老的解決方案,家喻戶曉。不想重灌的話,就試試 autoruns syscheck之類的軟體,把可疑的啟動程式都禁掉,再試試。有兩種可能 1 運用了某種外掛程式導...