亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

你好,請問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 關注
  • 373 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號