vba编译错误数组维度已定义
Ⅰ vb,求问一个小问题,这个代码运行以后,出现一个“编译错误:缺少数组或者用户定义类型”这是怎么回事
.
我觉得你写的有些不太妥的地方
1,arr1=Array(1,2,3,4)这个是用来定义数组的下标用的,不是用来赋值的.我这样写,定义的就是一个4维数组.你现在只需要一维四个元素,所以只要arr1=array(4)就OK了.
2,数组赋值应该像楼上那位仁兄一样,
3,传值,为什么要加小括号,我印象中直接把变量名放入括号就OK了?
4,我用word的VBA测试的,看不到print结果,所以改了msgbox.
5,VB已死,没必要研究了,如果想学桌面编程,试下其它的吧.比如C,C++,C#,java之类
Ⅱ VBA子函数输入是数组该怎么写提示错误(编译错误:类型不匹配,缺少数组或用户定义类型)
把LUDCMP的定义贴出来看看。
——————————
你还是没有把LUDCMP的定义贴出来啊。
我估计是你的LUDCMP过程参数写得有问题。
Sub LUDCMP(A(), N, INDX(), D)
如果你像上面那么写就肯定有问题
你要把类型指定清楚:
Sub LUDCMP(A() as Double, N as Integer, INDX() as Integer, D as Integer)
--------------------------
哦,你那样定义的啊。
我发现貌似是你的一个输入错误:
Call LUDCMP(al#(), N, INDX%(), p)
这里的al#没有定义。。。综观你的整个函数,没找到al的定义,是你不小心把a#()打成al#()了吗?
--
另外建议楼主以后所有变量在定义时都明确指明类型以减少出错的几率。
还有就是INDX%()这种写法已经不推荐了,应该用INDX() As Integer。其它的依此类推。。
Ⅲ Excel VBA编译错误:类型不匹配:缺少数组或用户定义类型
FunctionA_V_E(ary()AsVariant)
arr=Application.Transpose(Application.Transpose(ary))
Dimsumtemp
ForEachxInarr
n=n+1
sumtemp=sumtemp+x
Next
A_V_E=sumtemp/n
EndFunction
FunctionSt_De(ary()AsVariant)
Dimarr()
arr=Application.Transpose(Application.Transpose(ary))
DimX_ave
X_ave=A_V_E(arr)
Dimsum_x
ForEachxInarr
n=n+1
sum_x=sum_x+(x-X_ave)^2
Next
St_De=Sqr(sum_x/(n-1))
EndFunction
Subtest2()
Dimarr()
Dimresault
arr=Array(1,2,3,4)
resault=St_De(arr)
Debug.Printresault
EndSub