回 帖 发 新 帖 刷新版面

主题:VBA中定义动态数组

在EXCEL表格中有河床断面对应的起点距和高程数据,一个河道的实测断面是很多的,每一个实测断面对应的起点距和高程的数目都不一样。在编程对断面进行概化的过程中(也就是将不规则的断面概化为矩形或梯形断面),请问如何用VBA定义这些断面的数据?因为每个断面的测点是不一样的,对应的数组元素的个数就不一样。用Redim能实现吗?具体应该如何编写呢?

回复列表 (共5个回复)

沙发

开始的时候不用定义上下限,如:
dim a() as interger

然后你需要多少,用redim重新定义(如:redim a(1 to 8) as integer)就行了。如果你能预先知道这些数组的上限,你事先定义一个足够大的数组也未为不可,因为动态数组重分配空间的时候是需要一定的时间的。

板凳

谢谢解答!能不能不指定每一个数组的大小啊?因为我的段面数特别多,每个断面的测点数目也不一样。也就是说数组的大小每个断面都不一样,这样一个一个指定的话效率太低。譬如,我一共有100个断面,每个断面有一个起点距数组和高程数组,而这些起点距数组和高程数组的大小不一样,到知道元素最多的数组的大小。

3 楼

Type 断面类型
  起点距 as ... '看你自已的起点距是用什么格式的数据吧
  高程数据() as ... '自己看吧,反正差不多
End Type

dim 断面() as 断面类型 

4 楼

楼上的这种定义是针对可变数组的吗?感觉不对~~

5 楼

746.5    34.3     638.3    29.5     790.1    30.7     766.3    27.0     754.4    34.0     1046.5    36.5 
757.1    35.5     648.1    29.5     810.9    37.3     776.9    27.1     765.9    33.8     1067.9    36.9 
767.2    37.8     660.1    30.3     827.6    39.82    787.7    27.4     778.1    33.6     1089.2    37.3 
772.4    39.88    670.8    31.8     840.9    43.68    799.5    27.4     789.6    33.7     1098.8    37.7 
782.0    44.65    682.0    33.8     852.0    47.23    805.0    27.7     800.7    33.6     1119.4    38.4 
784.0    45.21    696.3    36.5     860.0    52.76    812.1    27.7     813.0    33.6     1138.2    39.2 
800.0    67.18    701.2    39.85    861.9    53.87    823.0    27.7     824.1    33.5     1158.2    39.4 
800.9    67.31    708.0    42.33    862.4    52.98    833.2    28.2     834.8    32.9     1169.6    39.5 
        710.0    45.67            843.8    30.5     846.5    32.2     1185.9    39.4 
        713.0    49.06            853.7    30.5     857.8    32.0     1197.3    39.64
        721.5    57.99            864.8    30.9     869.3    31.9     1210.1    41.49
                        875.9    31.2     880.3    32.1     1222.7    44.09
                        887.2    31.5     890.7    32.2     1229.6    46.81
                        897.8    32.4     902.0    32.1     1238.5    53.94
                        907.7    33.1     913.0    32.2     1241.1    53.54
                        925.0    35.0     923.6    32.2     1243.2    53.01
                        937.0    39.78    935.3    32.3     1245.1    53.65
                        945.0    43.31    946.2    32.3         
                        951.0    47.60    957.4    32.4         
                        960.3    55.21    968.3    32.4         
                        967.1    55.14    979.1    32.7         
就如同上面的这些数,维数不一样,我应该怎么样同时输入,而不用redim每一个数组的大小。不然我还得一个数组一个数组的去数~~~

我来回复

您尚未登录,请登录后再回复。点此登录或注册