返回列表 上一主題 發帖

[已解決][發問]程式簡化-陣列-VBA ,尋找某元素是否存在陣列中。

6樓 問 E 設成 String 不會work。
這是宣告 型態的問題

TOP

可以用TypeName 函數取得變數類型
MsgBox TypeName(M)

TOP

本帖最後由 GBKEE 於 2011-3-30 14:31 編輯

回復 6# Baracuda
迴圈  FOR EACH E  IN 物件    E的型態是Variant  或  Object
如  物件是 Range 範圍             E的型態可設為 Range
M = Application.Match(E, b, 0)  傳回 數字 或 #NA
M 的型態 是  Variant

TOP

GBKEE 謝謝。
這個程式 Work
請問一下變數的型態
E & M 各為何種型態。我現在是設成 Variant
E 設成 String 不會work。
請賜教一下。

TOP

本帖最後由 GBKEE 於 2011-3-29 10:26 編輯

回復 4# Baracuda
  1. Sub Ex()
  2.     A = Array("一", "五", "八")
  3.     b = Array("一", "二", "三", "四", "五", "六")
  4.     For Each E In A
  5.         M = Application.Match(E, b, 0)
  6.         MsgBox E & IIf(IsNumeric(M), "存在於 ", " 不存在於 ") & Join(b, ",")
  7.     Next
  8. End Sub
複製代碼

TOP

chin15 的方法比我的有效率。
少了一個 Loop 。
這樣的程式也比較簡短。
如果還有別的方式,請各位大哥大姐再幫忙一下。

TOP

a = Array("一", "五", "八")
   b = Array("一", "二", "三", "四", "五", "六")
For i = 0 To UBound(a)
If UBound(Filter(b, a(i))) = -1 Then
MsgBox "不 包含" & a(i)
Else
MsgBox "包含" & a(i)
End If
Next

TOP

程式的原始碼如上:
現在是用2 個廻圈在尋找是否 Input 的 Element 有存在 Output 的 Array 中。
想請問有無較簡潔的語法可以解決。

依照現在的程式可以找出 "八"是不在 Array Output 之中。

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題