3 回答

TA貢獻1856條經驗 獲得超5個贊
VBA.filter(c,b(j)) 先從這里分析
c是一個數組 b(j)是b數組的一個元素,
filter這里的意思就是從c數組中找出包括b(j)的所有元素,構成一個新的數組。
vba.filter(c,b(j))這里的意思就是從c中找出包含b(j)的所有元素構成一個新的數組。
再說ubound(參數)這個函數的作物,這里的參數必須是一個數組,而函數的返回值是這個參數數組的最大下標。
而結合起來看,就是如果c中包含了b(j)的元素,那么會構成一個新的數組,最大下標起碼是0,而不包含該元素時,自然b(j)的元素,那么返回-1

TA貢獻1880條經驗 獲得超4個贊
VBA.Filter本身是自動返回數組的,-1表示不包含,也就沒有返回一個數組,也就是VBA.Filter不構成數組。
一下來自MSDN
VBA.Filter返回以零為基礎的 array,其中包含以特定過濾條件為基礎的字符數組集.
Dim MyIndex
Dim MyArray (3)
MyArray(0) = "Sunday"
MyArray(1) = "Monday"
MyArray(2) = "Tuesday"
MyIndex = VBA.Filter(MyArray, "Mon") 'MyIndex(0) 包含 "Monday"。
也就是說包含的時候返回一個數組,否則不構成數組,UBound(VBA.Filter返回值)為-1
掉坑里了,提交后發現已經采納了。

TA貢獻1801條經驗 獲得超8個贊
ubound()=-1,指某一數組的最大下標為-1
1、這是VBA中的函數。ubound和lbound分別對應最大下標和最小下標。
2、括號內引用的參數為數組。
3、二者的范圍為均整數(負整數,0,正整數)。
4、一般設定其范圍為1到某個自然數或者0到某個自然數,便于計數。極少有使用負數的情況,當然并不違規。
可復制如下代碼到VBA中運行理解相關函數。
Sub array_() Dim my_Array(-10 To -1) As Single For i = -10 To -1 my_Array(i) = i * 2 Debug.Print my_Array(i) Next Debug.Print UBound(my_Array) Debug.Print LBound(my_Array) Debug.Print my_Array(UBound(my_Array)) Debug.Print my_Array(LBound(my_Array)) End Sub |
添加回答
舉報