【紧急求助】求高手指教一段VB代码,为何老是说下标越界?
是要求4*5数组的列和,然后按列和从大到小交换数组的列。我是想把5*5的最后一行做成列和,但是执行到redimpreserve那一行老是出问题,后面的排序也做不下去,求高...
是要求4*5数组的列和,然后按列和从大到小交换数组的列。我是想把5*5的最后一行做成列和,但是执行到redim preserve那一行老是出问题,后面的排序也做不下去,求高手指教!看了好几遍都没发现问题。。
Option Base 1
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(4, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Print
Next i
ReDim Preserve a(5, 5)
For j = 1 To 5
For i = 1 To 4
a(5, j) = a(5, j) + a(i, j)
Next i
Print a(5, j);
Next j 展开
Option Base 1
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(4, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Next i
ReDim Preserve a(5, 5)
For j = 1 To 5
For i = 1 To 4
a(5, j) = a(5, j) + a(i, j)
Next i
Print a(5, j);
Next j 展开
2个回答
展开全部
对于动态数组a,你第一次使用redim语句使其成为一个a(4,5)的数组之后,如果再使用redim语句来扩大或缩小它,你只能改变它的最后一维的大小,其他的就不能再改变了。
像这个你开始已经定义a为a(4,5),如果你想再定义为a(5,5)就会出错,因为你在试图改变第一维的大小。如果你定义为a(4,6)就不会出错。
正确的解决方法:
从一开始就定义数组a为a(5,5)即可。
Private Sub Command1_Click()
ReDim a(5, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Print
Next i
……………………………………
像这个你开始已经定义a为a(4,5),如果你想再定义为a(5,5)就会出错,因为你在试图改变第一维的大小。如果你定义为a(4,6)就不会出错。
正确的解决方法:
从一开始就定义数组a为a(5,5)即可。
Private Sub Command1_Click()
ReDim a(5, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Next i
……………………………………
展开全部
redim 只能重定义最后一维!
Option Base 1
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(5, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Print
Next i
For j = 1 To 5
For i = 1 To 4
a(5, j) = a(5, j) + a(i, j)
Next i
Print a(5, j);
Next j
End Sub
Option Base 1
Dim a() As Integer
Private Sub Command1_Click()
ReDim a(5, 5)
For i = 1 To 4
For j = 1 To 5
a(i, j) = Int(Rnd * 9) + 1
Print a(i, j); " ";
Next j
Next i
For j = 1 To 5
For i = 1 To 4
a(5, j) = a(5, j) + a(i, j)
Next i
Print a(5, j);
Next j
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询