VB下標越界怎麼辦,VB下標越界怎麼辦

時間 2022-06-19 02:25:02

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

a是如何定義的?沒定義的話在程式頭上加一句 dim a(0 to 10,0 to 10) as integer

3樓:匿名使用者

你定義陣列a的下標是多少???你單單給看一小段**看不出來,如可能,把**發過來,我幫你看看

4樓:煙花坑

把for j= 8-1 to 7 改成 for j= 8-i to 7

5樓:

i=1到6

j=7到7

i永遠不會大於j

vb下標越界怎麼解決

6樓:絕情

只能在定義的範圍內訪問陣列元素和集合成員。

此錯誤有以下的原因和解決方法:

引用了不存在的陣列元素.

下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。檢查陣列的宣告以確認其上界和下界。若使用的是重新指定範圍的陣列,應使用 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 表示一個錯誤鍵,錯誤就會產生。

若要改進此錯誤,在集合物件中使用正確的鍵名稱或索引。

7樓:匿名使用者

陣列的第一個元素的序號應該是0,即陣列是從第0個開始的,你標示的迴圈內的factor(i)改成factor(i-1)試試。

vb下標越界,怎麼解決?

8樓:匿名使用者

option base 1

option explicit

dim words() as string

private sub command1_click()

dim st as string, i as integer

st = lcase(text1)

call choice(st)

st = ""

for i = 1 to ubound(words)

st = st & words(i) & " "

next i

st = left(st, len(st) - 1) & "."

text2 = ucase(left(st, 1)) & mid(st, 2)

end sub

sub choice(s as string)

dim st as string, i as integer, k as integer, p as string, d() as string

k = 0

if right(s, 1) <> " " then s = s & " "

for i = 1 to len(s)

st = mid(s, i, 1)

if st >= "a" and st <= "z" then

p = p & st

elseif st = " " then

k = k + 1

redim preserve d(k)

d(k) = p

p = ""

end if

next

redim preserve words(ubound(d)) as string

words = d

end sub

提出2點是:

1.重新定義一個動態陣列要用redim preserve才能保留陣列原有的內容,如果僅用redim則會清空陣列內容。

2.sub是沒有返回值的,所以如你所寫的sub不會有任何作用,必須通過賦值來取得需要的結果。

9樓:匿名使用者

當你定議ws(k)時,你的陣列無素可能是ws(0)~ws(k-1)所以ws(k) = p會出現越界錯誤

vb中在給陣列賦值前必須指定陣列的大小,如定義dim word() as string,未指定陣列大小,所以在賦值前需要重新定義大小如 redim word(10) 或redim word(ubound(word)+1), 也可使用 redim preserve work(10), 則不會破壞陣列中原來的資料

10樓:匿名使用者

k = k + 1?

k好像沒有賦初值.

其它的沒細看

11樓:操璧俟傲霜

fori=0

to9forj=0

to9+i,j

的取值是從0到18,你定義陣列a

dima(1

to10),最大到a(10),a(j)

和a(j

+1)下標越界

12樓:練琲洋敏叡

不是怎麼解決這個錯誤的問題,你是這裡本身有問題。

提示下標越界。肯定是.columns(3)columns(5)

這裡的問題

datagrid1裡沒那麼多列

vb下標越界是什麼意思,怎麼解決

13樓:承冷菱

所謂陣列,是有序的元素序列。若將有限個型別相同的變數的集合命名,那麼這個名稱為陣列名。組成陣列的各個變數稱為陣列的分量,也稱為陣列的元素,有時也稱為下標變數。

用於區分陣列的各個元素的數字編號稱為下標。陣列是在程式設計中,為了處理方便, 把具有相同型別的若干元素按無序的形式組織起來的一種形式。這些無序排列的同類資料元素的集合稱為陣列。

陣列是用於儲存多個相同型別資料的集合。

如果有過用其它語言程式設計的經歷,那麼想必會熟悉陣列的概念。由於有了陣列,可以用相同名字引用一系列變數,並用數字(索引)來識別它們。在許多場合,使用陣列可以縮短和簡化程式,因為可以利用索引值設計一個迴圈,高效處理多種情況。

陣列有上界和下界,陣列的元素在上下界內是連續的。因為 visual basic對每一個索引值都分配空間,所以不要不切實際宣告一個太大的陣列。

此處陣列是程式中宣告的變數陣列。它們不同於控制元件陣列,控制元件陣列是在設計時通過設定控制元件的 index 屬性規定的。變數陣列總是連續的;與控制元件陣列不同的是,不能從一個陣列的中部載入或解除安裝陣列元素。

希望我能幫助你解疑釋惑。

14樓:趙鴿

回答下標越界大多是針對陣列來說的。比如你定義的陣列的長度是10。那麼你的陣列裡就有10個元素,他們的小標分別是從0--9。如果下標大於9了,這就叫下標越界了。

解決的方法:可以把陣列的大小定義的大一點,在使用陣列裡的元素的時候,別讓它的小標超過規定值!

vb中下標越界怎麼改呀?

15樓:陰叡多尋芹

k=1to

10這裡改成0to9

你陣列只有10個元素,索引從0開始的,所以最後一個元素的索引是9,但是你索引卻是1~10,所以第十次迴圈越界

看看基本的迴圈語句for、while、dowhile的差別吧

vb提示下標越界問題

16樓:網海1書生

問題很多。首先,動態陣列a沒有重定義下標的上下限,這樣直接使用的話就會造成「下標越界」的錯誤。解決辦法要麼用redim a(1000),要麼就把a設為固定陣列 dim a(1000) as integer

其次,陣列a沒有賦值。從**來看,你是想從文字檔案中提取資料再賦值給陣列a,但是你的文字檔案開啟後就沒有任何動作啊?!由於不知道你的檔案結構,我也無法給你提供具體的修改意見。

vb程式設計下標越界怎麼處理

17樓:

比如,fib數列:fib(i)=fib(i-1)+fib(i-2);要程式設計輸出該數列的前20項:1,1,2,3,5,8,......

編的過程中有i=20,而fib(i-1)中(i-1)也處在i的位置;(i-1)=20,這時(i)=21,於是「下標越界」了。

用redim語句可改變陣列的維數及上、下界

18樓:匿名使用者

每次這樣呼叫:

for i=lbound(陣列名稱) to ubound(陣列名稱)next

這樣就不會發生下標越界了

因為lbound函式得到陣列最小可用的下標值,而ubound函式則得到陣列最大可用的下標值.

19樓:大海針

下標越界,一定是你使用陣列時,超出了陣列定義時的上限。

在vb中,定義陣列:dim array_name(n) as data_type

意味著該陣列引用時,下標使用範圍為0~n,這樣n+1個數,其下標不可超過n,否則將「下標越界」。

關於asp的下標越界number

估計是request.form ip 並未獲取到值。建議樓主在ip trim request.form ip 後面加一行 除錯用,除錯完畢後刪除 response.write ip 這樣就可以顯示出來你的ip是否被正確賦值,如果賦值正確,那麼接著往下檢查 在ipstr split ip,後面加上re...

高手請進,跪求,asp陣列下標越界

xingxi 108 100,109 100,110 100,111 100,121 100,122 100,在這最後有一個 號,但後面沒有值,因此你使用split來拆分時是得不到資料的.使用if對str i 內容進行下非空判斷就行了.xingxi 108 100,109 100,110 100,1...

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

excel提示下標越界是vba程式執行的一個錯誤提示,原因有以下幾個 1 引用了不存在的陣列元素 下標比可能下標範圍大或小,或是在應用程式中這一邊的陣列沒有指定範圍。2 宣告陣列時沒有指定元素的數目 引用了不存在的集合成員。3 使用速寫形式的下標,結果指定了錯誤的元素。4 引用或操作的工作薄 工作表...