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 引用或操作的工作薄 工作表...