我想寫一個函數,它使用數組的上下限並返回元素的數量。這是因爲缺乏經驗,混淆我有一個功能,但儘管如此我想出了下面這段代碼:函數使用數組
Function numelement(LBound(array1), UBound(array2)) as Integer
numelement = UBound(array1) - LBound(array2)
End Function
這段代碼是正確的,我知道它的簡單,但多數民衆贊成這段代碼的目的是爲了是。
我想寫一個函數,它使用數組的上下限並返回元素的數量。這是因爲缺乏經驗,混淆我有一個功能,但儘管如此我想出了下面這段代碼:函數使用數組
Function numelement(LBound(array1), UBound(array2)) as Integer
numelement = UBound(array1) - LBound(array2)
End Function
這段代碼是正確的,我知道它的簡單,但多數民衆贊成這段代碼的目的是爲了是。
如果你真的希望擁有的功能(你可以很容易地做到這一點沒有它),然後嘗試下面的代碼:
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
你不需要這個功能。如果你像這樣使用數組,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
「Ubound +1總是適用於元素的總數」:真的嗎? 'Dim arr(3 To 4):arr(3)= 1:arr(4)= 2:MsgBox UBound(arr):MsgBox(UBound(arr) - LBound(arr)+1)' –
@AxelRichter, ,編輯。 – Vityata