[算表] Excel定义多维阵列的长度

楼主: Lanjaja   2021-03-23 18:36:11
软件:Excel
版本:Office 2013
各位先进好!
我想请问一下在定义多维动态阵列时,
假如我需要计算一个适当的大小,
例如
变量经过运算后得到三个变量值mini = 3, maxi = 15, size = 8
想让程式根据程式过程中得到的变量值而量身订做一个多维矩阵
Dim matrix(mini To maxi,1 To length) as integer
就会出错,说length必须要是常数,
可是mini To maxi都没有问题,
就只有length有问题,
好奇怪!
不知道板上先进能不能解释一下问题出在哪里?该如何解套?
感谢各位先进的帮忙~
作者: soyoso (我是耀宗)   2021-03-23 20:14:00
mini To maxi都没有问题,就只有length有问题,这方面可以只以mini To maxihttps://i.imgur.com/0HLJV8w.jpeg还是有问题的先宣告matrix() as ....再redim matrix(mini to maxi, 1 to....) ...另外内文变量值要在执行redim前正确取得
楼主: Lanjaja   2021-03-25 01:37:00
请问s大 我如果一开始先dim matrix() as 程式会不会以为我只是在定义一维向量?但其实我想要的是二维向量我试的结果 似乎是多维度的最后一个维度长度不能是变量S大因为用一维的 所以maxi会出现问题还是我有误解?
作者: soyoso (我是耀宗)   2021-03-25 07:22:00
不是,用一维会误会的话,一样也用二维Dim matrix(mini To maxi,1 To length) as integer,标记在lengthDim matrix(mini To maxi, 1 To 10) As Integer,标记在maxiDim matrix(mini To 10, 1 To 10) As Integer,标记在mini必须是常数运算式所以维度的上限(上标)或是下限(下标)只要是变量就会错误,而非最后一个不能是变量dim matrix()是动态的,不会只是定义一维,就看之后redim补充一下,内文写到length必须要是常数,可是mini To maxi都没有问题,这并不是指mini To maxi是正确的,而是在取得1 To length这个上下限(标)时就产生错误,所以标记在length这个地方
楼主: Lanjaja   2021-03-25 14:51:00
谢谢s大,接下来就有个问题,我应该要怎么把length minimaxi的数值取出来变常数?例如我定义另一个const lgth asintger = length 会发生错误 可是这些变量是在程式计算过程中计算出来的 我事先没办法知道 也不想中断程式 所以想知道如何把mini maxi length的数值取出来摆在matrix定义中而不会发生错误?谢谢您的帮忙
作者: soyoso (我是耀宗)   2021-03-25 15:54:00
那不要在程序内宣告而是移到模组Module的最上方宣告,写入值后也可以用于其他程序内,不同模组的话内public
楼主: Lanjaja   2021-03-26 23:03:00
不太懂s大的意思 是说如果在模组最上用public宣告 可是变量还是变量 matrix()就会把public变量当常数看待吗?
作者: soyoso (我是耀宗)   2021-03-27 06:38:00
写入值到变量后,如果不再重新写入值,那变量内的值也就是不变的常数调整一下,除不再重新写入值外,或重新写入值都是相同时,也会是常数
楼主: Lanjaja   2021-03-29 03:41:00
其实变量之后还会用到 所以我另外创一个变量去等于length还是会发生错误的讯息 所以不知道是不是VBA不能接受变量
作者: soyoso (我是耀宗)   2021-03-29 06:35:00
创一个变量去等于length还是会发生错误的讯息指的是什么,是指const lgth as intger = length这样会有错误讯息吗?如果是的话,是的,无法这样写,这原po测试就发生错误讯息了;那变量之后用的到,这里"之后"指的如是执行宏过程内要将这个变量保留,于另一个程序内取得的话,就如我03/2515:54回文的方式。这方面就试试,试了无法达成,就提供如何写的和要的结果,会比较清楚
作者: waiter337 (给开司一罐苏格登)   2021-04-04 01:15:00
dim matrixredim matrix(mini To maxi,1 To length)

Links booklink

Contact Us: admin [ a t ] ucptt.com