翔羽 发表于 2005-9-24 18:58:00

动态定义二维数组出问题

动态定义二维数组出问题<BR>我再vba中开始定义一个数组<BR>dim a() as integer<BR>然后在程序的过程中动态定义:<BR>redim preserve a(1 to i,1 to 2) as integer<BR>然后再程序的运行过程中提示错误:下标越界<BR>请问怎么解决?

翔羽 发表于 2005-9-24 19:03:00

变量i 动态改变大小

翔羽 发表于 2005-9-24 19:09:00

当我把i的值随意取一个固定的值(比如100)的时候,程序运行正常,请问如果要动态改变二维数组的大小的时候,请问怎么解决问题?

雪山飞狐_lzh 发表于 2005-9-24 21:52:00

<P>如果有preserve关键字就只能改变最后一维,去掉该关键字</P>

翔羽 发表于 2005-9-25 08:31:00

<P>哦</P>
<P>但是我在动态定义a(1 to i,1 to 2)大小的时候,需要保存上次存储在数组中的值,如果不用preserve的话,以前的值是空值,请问斑竹怎么解决这个问题??</P>

mccad 发表于 2005-9-25 08:50:00

调过来定义不行吗?

翔羽 发表于 2005-9-25 09:36:00

<P>怎么样调过来定义?我所需要的数组是二维的,其中最后一维是固定的,就是1 to 2 </P>
<P>变化的就是第一维的范围1 to i 请问怎么解决阿~~</P>

雪山飞狐_lzh 发表于 2005-9-25 11:47:00

Sub tt()
Dim a() As Integer
ReDim a(1 To 2, 1 To 1) As Integer
a(1, 1) = 10
i = 10
ReDim Preserve a(1 To 2, 1 To i) As Integer
MsgBox a(1, 1)
End Sub

翔羽 发表于 2005-9-25 14:17:00

<P>谢谢斑竹~~</P>
<P>斑竹弄错我的意思了,我的意思是想这样定义:redim preserve a(1 to i,1 to 2) as integer而不是ReDim Preserve a(1 To 2, 1 To i) As Integer<BR><BR></P>

mccad 发表于 2005-9-25 14:46:00

这有什么区别?<BR>数组是用来存数据用的。如果不涉及到与外部其它程序的数据交换问题,这些数据都是自己定的,如果这样的话,怎么样的数据写程序最简单、运行速度最快就可以采用,为什么必须使用规定格式的数据呢?<BR>就象我写的那个“简繁转换”的程序一样,为了达到最大的读取和运行速度,初始化的数据都是使用特殊格式的方式。<BR>为什么我会让你调过来,把需要改变维数的那一组放在最后面,考虑的也就是写程序的方便,因为我以前在写“对象均布”程序中就碰到这样的问题。
页: [1] 2
查看完整版本: 动态定义二维数组出问题