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 SingleFor i = -10 To -1my_Array(i) = i * 2Debug.Print my_Array(i)NextDebug.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 |
添加回答
举报
