求VB中实现动态多维数组的方法,数组其中一维固定

may_meng 2003-08-23 01:47:48
使用先dim()后redim preserve(I,2)的方法以后提示数组下标越界……

请指点
最好有代码段^_^
...全文
151 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
matchchen 2003-08-23
  • 打赏
  • 举报
回复
这样可以,其中v就是一个一维固定、二维不固定的数组:

Private Sub Form_Load()
Dim v(3) As Variant
Dim a() As String
Dim b() As String
Dim c() As String

ReDim Preserve a(1 To 1) As String
ReDim Preserve b(1 To 2) As String
ReDim Preserve c(1 To 3) As String

a(1) = "a1"
b(1) = "b1"
b(2) = "b2"
c(1) = "c1"
c(2) = "c2"
c(3) = "c3"

v(1) = a
v(2) = b
v(3) = c

End Sub
当然,很可能还有更好的办法。
xingsoft 2003-08-23
  • 打赏
  • 举报
回复
'***************
'初始化一个2D 数组
dim avnt2DArray,avntTemp
redim avnt2DArray(100)
dim lngLoop
for lngLoop=0 to ubound(avntArrayMain)
'增加代码初始化一维数组,任意指定维数
redim avnt2DArray(lngLoop)
'。。。。。。这里放置初始化数据的代码
'...........
'将一维数组放到主数组
avntArrayMain(lngLoop)=avntTemp
next

'***************
得到二维数组的元素
'得到第N行(返回一个数组)
dim avntLine,lngWhichLine
avntLine=avnt2DArray(lngWhichLine)
'得到第X行第Y列的元素
dim vntElement,lngWhichCol
vntElement=avnt2DArray(lngWhichLine)(lngWhichCol)
'***************
'***********************************************************
'*希望能够对你有所帮助!
'***********************************************************
bbgbianbaogui 2003-08-23
  • 打赏
  • 举报
回复
先用eraser
redim 只能改变最后一维的大小。
脆皮大雪糕 2003-08-23
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim a() As String, i As Long

For i = 1 To 5

ReDim Preserve a(2, i) '重新定义第二维
a(2, i) = i * 2
Next

For i = 1 To 5
Debug.Print a(2, i) '效果验证
Next
End Sub
脆皮大雪糕 2003-08-23
  • 打赏
  • 举报
回复
如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。例如,如果数组就是一维的,则可以重定义该维的大小,因为它是最末维,也是仅有的一维。不过,如果数组是二维或更多维时,则只有改变其最末维才能同时仍保留数组中的内容。下面的示例介绍了如何在为已有的动态数组增加其最末维大小的同时而不清除其中所含的任何数据。

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)

同样地,在使用 Preserve 时,只能通过改变上界来改变数组的大小;改变下界则会导致错误。

如果将数组改小,则被删除的元素中的数据就会丢失。如果按地址将数组传递给某个过程,那么不要在该过程内重定义该数组的各维的大小。
射天狼 2003-08-23
  • 打赏
  • 举报
回复
Option Explicit

Private Sub Command1_Click()
Dim a() As String, i As Long

i = 100
ReDim a(i, 2) '只能重新定义一次,所以要一次申请够用了啊~~
Erase a '撤底释放内存
End Sub

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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