2017-04-13 79 views
0

我想寫一個函數,它使用數組的上下限並返回元素的數量。這是因爲缺乏經驗,混淆我有一個功能,但儘管如此我想出了下面這段代碼:函數使用數組

Function numelement(LBound(array1), UBound(array2)) as Integer 
    numelement = UBound(array1) - LBound(array2) 
End Function 

這段代碼是正確的,我知道它的簡單,但多數民衆贊成這段代碼的目的是爲了是。

回答

0

如果你真的希望擁有的功能(你可以很容易地做到這一點沒有它),然後嘗試下面的代碼:

Function numelement(array1 As Variant) As Long 
    numelement = (UBound(array1) - LBound(array1)) + 1 '<-- since array iz zero based 
End Function 

Sub代碼來測試功能:

Sub TestFunc() 

Dim Arr As Variant 
Arr = Array("Shai", "Rado", "Tel-Aviv") 

MsgBox numelement(Arr) 

End Sub 

注意:代替功能,您可以使用:

Dim array1 As Variant 
array1 = Array("Shai", "Rado", "Tel-Aviv") 

MsgBox "number of elements in array are " & UBound(array1) + 1 
0

你不需要這個功能。如果你像這樣使用數組,Ubound +1可以很好地處理元素的總數。它是在VBA內置它的功能,它的偉大工程:

Option Explicit 

Sub TestMe() 

    Dim myArr As Variant 

    myArr = Array("A", "B", "C") 

    Debug.Print LBound(myArr) 
    Debug.Print UBound(myArr) 

End Sub 

除非你決定要初始化一個這樣的數組:

Dim arr(3 To 4) 
    arr(3) = 1 
    arr(4) = 2 

那麼你應該使用下列內容:

debug.print UBound(myArr)-LBound(myArr)+1 
+1

「Ubound +1總是適用於元素的總數」:真的嗎? 'Dim arr(3 To 4):arr(3)= 1:arr(4)= 2:MsgBox UBound(arr):MsgBox(UBound(arr) - LBound(arr)+1)' –

+0

@AxelRichter, ,編輯。 – Vityata