返回列表 上一主題 發帖

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

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

本帖最後由 Baracuda 於 2011-4-7 09:24 編輯
  1. Option Explicit
  2. Option Base 1

  3. Dim Input_No  As Integer, Output_No As Integer
  4. Dim Output_Sht_Name_Ary, Input_Sht_Name_Ary

  5. Sub initial()
  6.     Input_Sht_Name_Ary = Array("一", "五", "八")
  7.     Output_Sht_Name_Ary = Array("一", "二", "三", "四", "五", "六")

  8.     Input_No = UBound(Input_Sht_Name_Ary)
  9.     Output_No = UBound(Output_Sht_Name_Ary)

  10. End Sub

  11. Sub main()

  12.    Call initial
  13.    Call Print_Not_Found

  14. End Sub


  15. Sub Print_Not_Found()
  16. Dim Sht_Cnt As Integer
  17. Dim Ctr_1 As Integer, Ctr_2 As Integer
  18. Dim Found_Or_Not As Boolean
  19.    
  20.     Found_Or_Not = False
  21.    
  22.     For Ctr_1 = 1 To Input_No
  23.         
  24.         For Ctr_2 = 1 To Output_No
  25.             If Input_Sht_Name_Ary(Ctr_1) = Output_Sht_Name_Ary(Ctr_2) Then
  26.                 Found_Or_Not = True
  27.                 Exit For
  28.             End If
  29.         Next Ctr_2
  30.         If Not (Found_Or_Not) Then
  31.             Debug.Print Input_Sht_Name_Ary(Ctr_1)
  32.         End If
  33.         
  34.         Found_Or_Not = False
  35.     Next Ctr_1

  36. End Sub
複製代碼

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

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

TOP

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

TOP

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

TOP

謝謝 GBKEE,我也是先這樣設定變數型態。
只是我怕太過於耗系統資源(雖然現在的系統資源都還好),但是為養成好習慣,還是平常就省著點用。

TOP

chin15 謝謝。從你回答的問題,覺得你是強手,已經從小學生轉為中學生了,謝謝。程度本來就不應該是小學生。

TOP

        靜思自在 : 真正的愛心,是照顧好自己的這顆心。
返回列表 上一主題