Sub 怎样从一个数组中找出另一个数组不存在的内容2()
Dim b(), c(), d()
Dim n, j As Integer
b = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
c = Array(1, 2, 3, 4, 5, 6, 7, 8)
n = 1
For j = LBound(b) To UBound(b)
If UBound(VBA.Filter(c, b(j))) = -1 Then
ReDim Preserve d(1 To n)
d(n) = b(j)
n = n + 1
End If
Next
MsgBox Join(d, ",")
End Sub
请问,这段代码中If UBound(VBA.Filter(c, b(j))) = -1 Then,为什么要判断是否等于-1,等于-1代表什么,还有别的值么?分别是什么意思!谢谢
UBound() = -1是什么意思?
答案:4 悬赏:20 手机版
解决时间 2021-03-05 09:05
- 提问者网友:遮云壑
- 2021-03-04 23:59
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-03-05 00:34
oaita说的不对。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
掉坑里了,提交后发现已经采纳了。
一下来自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
掉坑里了,提交后发现已经采纳了。
全部回答
- 1楼网友:深街酒徒
- 2021-03-05 02:44
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
- 2楼网友:空山清雨
- 2021-03-05 01:41
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
- 3楼网友:等灯
- 2021-03-05 01:35
ubound 函数返回一个数组的最大下标,数据类型为long。比如说你定义了一个数组a(22),他的最大下标为22。如果你给m赋值:m=ubound(a()),那么m的值就为22。.知道了函数的意义,什么时候用就不在话下了,比如说给元素比较多的数组赋值,据个例子
dim a(22) as integer
for i=0 to ubound(a())
a(i)=i
next i
与ubound相对的是lbound ,它是返回一个数组的最小下标,就不赘述了
如果想了解更多的vb函数,可以打开word点击工具>宏>visual basic编辑器>帮助>microsoft visual basic帮助>左侧的visual basic语言参考。
以上为个人看法,手打很辛苦,希望采纳,谢谢您的支持。
谢谢您的支持,有任何疑问欢迎您再次通过此渠道提问,让大家共同解决,共同进步!
以上回答仅为“百度规则”,没有任何违法行为,请楼主采纳,谢谢!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯