3 回答

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

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

TA貢獻(xiàn)1801條經(jīng)驗 獲得超8個贊
ubound()=-1,指某一數(shù)組的最大下標(biāo)為-1
1、這是VBA中的函數(shù)。ubound和lbound分別對應(yīng)最大下標(biāo)和最小下標(biāo)。
2、括號內(nèi)引用的參數(shù)為數(shù)組。
3、二者的范圍為均整數(shù)(負(fù)整數(shù),0,正整數(shù))。
4、一般設(shè)定其范圍為1到某個自然數(shù)或者0到某個自然數(shù),便于計數(shù)。極少有使用負(fù)數(shù)的情況,當(dāng)然并不違規(guī)。
可復(fù)制如下代碼到VBA中運(yùn)行理解相關(guān)函數(shù)。
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 |
添加回答
舉報