Dim,Redim和ReDim Preserve的问题,帮忙看看这小段代码怎么总是“下标越界”

小乖 2004-08-05 11:45:41
dim MyArray()
Redim MyArrray(2)

MyArray(0) = "hello"
MyArray(1) = "good-bye"

ReDim Preserve MyArray(5)

MyArray(2) = "more stuff"
MyArray(3) = "even more stuff"
MyArray(4) = "yet more stuff"

for i=0 to ubound(myarray)-1
msgbox myarray(i)
next

是我错了?
...全文
528 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunjiujiu 2004-08-05
  • 打赏
  • 举报
回复
Dim MyArray() As Integer '声明动态数组。
Redim MyArray(5) '分配 5 个元素。
For I = 1 To 5 '循环 5 次。
MyArray(I) = I '初始化数组。
Next I

下一条语句重定义该数组的大小,并清除其中的元素。

Redim MyArray(10) '大小重定为 10 个元素。
For I = 1 To 10 '循环 10 次。
MyArray(I) = I '初始化数组。
Next I

下面的语句重定义该数组的大小,但没有清除其中的元素。

Redim Preserve MyArray(15) '大小重定为 15 个元素


******************* 以上为msdn中的说明 **********************
Dim MyArray() As String '声明动态数组。
ReDim MyArray(5) '分配 5 个元素。
For i = 1 To 5 '循环 5 次。
MyArray(i) = CStr(i) '初始化数组。
Next i

'下一条语句重定义该数组的大小,并清除其中的元素。

'ReDim MyArray(10) '大小重定为 10 个元素。
'For I = 1 To 10 '循环 10 次。
' MyArray(I) = I '初始化数组。
'Next I

'下面的语句重定义该数组的大小,但没有清除其中的元素。

ReDim Preserve MyArray(15) '大小重定为 15 个元素。
For i = 5 To 14 '循环 10 次。
MyArray(i) = "more stuff"
Next i


For i = 0 To UBound(MyArray) - 1
MsgBox MyArray(i)
Next

******************** 以上为我的试验,没有问题 *********************
你对照一下看看你的代码哪里出问题了吧
smallyear 2004-08-05
  • 打赏
  • 举报
回复
代碼里面可能含有其它無法識別的字符
你試著重新用手輸入﹐不要COPY﹗
小乖 2004-08-05
  • 打赏
  • 举报
回复
baby21st(愚人): ..............-_-...


mjpclab(http://mjpclab.8u8.com): 谢谢了。。。不好意思。。。。。还是自己马虎。。。
seraphgxh 2004-08-05
  • 打赏
  • 举报
回复
请注意 mjpclab(http://mjpclab.8u8.com) 的回答
baby21st 2004-08-05
  • 打赏
  • 举报
回复
不好意思,叫错了~~不要骂我啊~ 刚才看题库怎么就把小看成小妹了~~呵呵~~

baby21st 2004-08-05
  • 打赏
  • 举报
回复
小妹,你看看你的程序!!!

dim MyArray()
Redim MyArrray(2)
---------^
多了个r,唉~~







mjpclab 2004-08-05
  • 打赏
  • 举报
回复
Redim MyArray(2)
实际定义的是MyArray(0),MyArray(1),MyArray(2)
这和C语言是有区别的
mjpclab 2004-08-05
  • 打赏
  • 举报
回复
Redim MyArrray(2)
------>
Redim MyArray(2)

还有,服务器端不可以执行msgbox,你想让对话框在服务器上显示?
专业VB课件这个程序的目的是为了实现得到文本框1中的 数组b 和 内置 数组a 的交集,并以交集元素的个数作为 文本框二 显示可以执行的条件。代码如下: Private Sub Command1_Click() Dim a(0 To 9) As String '定义一个内置的数组 Dim b(0 To 3) As String '文本框中 输入的数组 Dim c() As String '数组a与数组b的交集 Dim m As Byte '定义 数组a的循环变量 Dim n As Byte '定义 数组b的循环变量 Dim i As Byte '定义 交集c的元素数量 a(0) = "01": a(1) = 10: a(2) = 11: a(3) = 35: a(4) = 47: a(5) = 56: a(6) = 67: a(7) = 76: a(8) = 83: a(9) = 99 '给数组a赋值 b(0) = Mid(Text1.Text, 1, 2): b(1) = Mid(Text1.Text, 4, 2): b(2) = Mid(Text1.Text, 7, 3): b(3) = Mid(Text1.Text, 10, 3) '给数组b赋值 For m = 0 To 9 For n = 0 To 3 i = 0 If a(m) = b(n) Then c(i) = a(m): i = i + 1: Exit For End If Next n Next m '循环得到交集 c If UBound(c) + 1 >= 2 Then '获得交集c中元素的个数 Text2.Text = 可以执行 End If End Sub 运行时,当我输入 四个两位 的数据,点击按钮 1 显示提示 下标越界。 请求各位达人帮助,我如何才可以达到自己的目的,最好有完整的代码问题补充: 按照一楼的说法做了,代码如下: Private Sub Command1_Click() Dim a(0 To 9) As String '定义一个内置的数组 Dim b(0 To 3) As String '文本框中 输入的数组 Dim c() As String '数组a与数组b的交集 ReDim Preserve c(i) Dim m As Byte '定义 数组a的循环变量 Dim n As Byte '定义 数组b的循环变量 a(0) = "01": a(1) = 10: a(2) = 11: a(3) = 35: a(4) = 47: a(5) = 56: a(6) = 67: a(7) = 76: a(8) = 83: a(9) = 99 '给数组a赋值 b(0) = Mid(Text1.Text, 1, 2): b(1) = Mid(Text1.Text, 4, 2): b(2) = Mid(Text1.Text, 7, 2): b(3) = Mid(Text1.Text, 10, 2) '给数组b赋值 i = 0 For m = 0 To 9 For n = 0 To 3 If a(m) = b(n) Then ReDim Preserve c(i) c(i) = a(m): i = i + 1: Exit For End If Next n Next m '循环得到交集 c If UBound(c) + 1 >= 2 Then '获得交集c中元素的个数 Text2.Text = "可以执行" End If End Sub

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧