明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9609|回复: 11

动态定义二维数组出问题

  [复制链接]
发表于 2005-9-24 18:58:00 | 显示全部楼层 |阅读模式
动态定义二维数组出问题
我再vba中开始定义一个数组
dim a() as integer
然后在程序的过程中动态定义:
redim preserve a(1 to i,1 to 2) as integer
然后再程序的运行过程中提示错误:下标越界
请问怎么解决?
 楼主| 发表于 2005-9-24 19:03:00 | 显示全部楼层
变量i 动态改变大小
 楼主| 发表于 2005-9-24 19:09:00 | 显示全部楼层
当我把i的值随意取一个固定的值(比如100)的时候,程序运行正常,请问如果要动态改变二维数组的大小的时候,请问怎么解决问题?
发表于 2005-9-24 21:52:00 | 显示全部楼层

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

 楼主| 发表于 2005-9-25 08:31:00 | 显示全部楼层

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

发表于 2005-9-25 08:50:00 | 显示全部楼层
调过来定义不行吗?
 楼主| 发表于 2005-9-25 09:36:00 | 显示全部楼层

怎么样调过来定义?我所需要的数组是二维的,其中最后一维是固定的,就是1 to 2

变化的就是第一维的范围1 to i 请问怎么解决阿~~

发表于 2005-9-25 11:47:00 | 显示全部楼层
  1. Sub tt()
  2. Dim a() As Integer
  3. ReDim a(1 To 2, 1 To 1) As Integer
  4. a(1, 1) = 10
  5. i = 10
  6. ReDim Preserve a(1 To 2, 1 To i) As Integer
  7. MsgBox a(1, 1)
  8. End Sub

 楼主| 发表于 2005-9-25 14:17:00 | 显示全部楼层

谢谢斑竹~~

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

发表于 2005-9-25 14:46:00 | 显示全部楼层
这有什么区别?
数组是用来存数据用的。如果不涉及到与外部其它程序的数据交换问题,这些数据都是自己定的,如果这样的话,怎么样的数据写程序最简单、运行速度最快就可以采用,为什么必须使用规定格式的数据呢?
就象我写的那个“简繁转换”的程序一样,为了达到最大的读取和运行速度,初始化的数据都是使用特殊格式的方式。
为什么我会让你调过来,把需要改变维数的那一组放在最后面,考虑的也就是写程序的方便,因为我以前在写“对象均布”程序中就碰到这样的问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-22 16:50 , Processed in 0.191963 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表