主题:VBA中定义动态数组
superhugo
[专家分:110] 发布于 2009-08-02 23:07:00
在EXCEL表格中有河床断面对应的起点距和高程数据,一个河道的实测断面是很多的,每一个实测断面对应的起点距和高程的数目都不一样。在编程对断面进行概化的过程中(也就是将不规则的断面概化为矩形或梯形断面),请问如何用VBA定义这些断面的数据?因为每个断面的测点是不一样的,对应的数组元素的个数就不一样。用Redim能实现吗?具体应该如何编写呢?
回复列表 (共5个回复)
沙发
我是大喊三 [专家分:3010] 发布于 2009-08-03 11:48:00
开始的时候不用定义上下限,如:
dim a() as interger
然后你需要多少,用redim重新定义(如:redim a(1 to 8) as integer)就行了。如果你能预先知道这些数组的上限,你事先定义一个足够大的数组也未为不可,因为动态数组重分配空间的时候是需要一定的时间的。
板凳
superhugo [专家分:110] 发布于 2009-08-03 14:49:00
谢谢解答!能不能不指定每一个数组的大小啊?因为我的段面数特别多,每个断面的测点数目也不一样。也就是说数组的大小每个断面都不一样,这样一个一个指定的话效率太低。譬如,我一共有100个断面,每个断面有一个起点距数组和高程数组,而这些起点距数组和高程数组的大小不一样,到知道元素最多的数组的大小。
3 楼
joforn [专家分:1460] 发布于 2009-08-03 17:41:00
Type 断面类型
起点距 as ... '看你自已的起点距是用什么格式的数据吧
高程数据() as ... '自己看吧,反正差不多
End Type
dim 断面() as 断面类型
4 楼
superhugo [专家分:110] 发布于 2009-08-11 16:49:00
楼上的这种定义是针对可变数组的吗?感觉不对~~
5 楼
superhugo [专家分:110] 发布于 2009-08-11 16:53:00
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每一个数组的大小。不然我还得一个数组一个数组的去数~~~
我来回复