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