为了账号安全,请及时绑定邮箱和手机立即绑定

你好,请问UBound() = -1是什么意思?

你好,请问UBound() = -1是什么意思?

守候你守候我 2022-04-03 10:06:55
Sub 怎样从一个数组中找出另一个数组不存在的内容2()Dim b(), c(), d()Dim n, j As Integerb = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)c = Array(1, 2, 3, 4, 5, 6, 7, 8)n = 1For j = LBound(b) To UBound(b)If UBound(VBA.Filter(c, b(j))) = -1 ThenReDim Preserve d(1 To n)d(n) = b(j)n = n + 1End IfNextMsgBox Join(d, ",")End Sub请问,这段代码中If UBound(VBA.Filter(c, b(j))) = -1 Then,为什么要判断是否等于-1,等于-1代表什么,还有别的值么?分别是什么意思!谢谢
查看完整描述

3 回答

?
RISEBY

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

查看完整回答
反对 回复 2022-04-07
?
慕村225694

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
掉坑里了,提交后发现已经采纳了。



查看完整回答
反对 回复 2022-04-07
?
蝴蝶刀刀

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



查看完整回答
反对 回复 2022-04-07
  • 3 回答
  • 0 关注
  • 473 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号