返回列表 上一主題 發帖

[發問] 關於此段程式碼的改進以及說明?

回復 1# starry1314
試試看
  1. Sub tt()
  2.     Dim arr(), str As String, brr As String
  3.     str = Sheets("工作表1").[c2].Value
  4.     Sheets("工作表1").[E8] = ""
  5.     arr = Sheets("data").[a1].CurrentRegion.Rows(2).Value
  6.     For i = 2 To UBound(arr, 2) Step 2
  7.             If InStr(arr(1, i), str) = 0 Then
  8.                 Sheets("工作表1").[E8] = arr(1, i - 1)
  9.                 brr = arr(1, i)
  10.                 Exit For
  11.             End If
  12.     Next
  13.     If brr = "" Then
  14.         MsgBox "查不到結果"
  15.     Else
  16.         MsgBox "最後有" & Sheets("工作表1").[E8] & "為:" & brr
  17.     End If
  18. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 5# starry1314
正在找怎麼讓他以【,】做區分只要出現其中一個條件 就跳往下一道菜色
  1. Option Explicit
  2. Sub Ex()
  3.     Dim arr(), str As String, brr() As String, I As Integer
  4.     Dim S As Variant, E As Integer
  5.     str = Sheets("工作表1").[c2].Value
  6.     Sheets("工作表1").[E8] = ""
  7.     arr = Sheets("data").[a1].CurrentRegion.Rows(2).Value
  8.     For I = 2 To UBound(arr, 2) Step 2
  9.         S = Split(str, ",")
  10.         ReDim brr(0 To UBound(S))
  11.         For E = 0 To UBound(S)
  12.             If InStr(arr(1, I), S(E)) Then brr(E) = "禁忌"
  13.         Next
  14.         S = Join(brr, "")
  15.         If S = "" Then
  16.             Sheets("工作表1").[E8] = arr(1, I - 1)
  17.             Exit For
  18.         End If
  19.     Next
  20.     With Sheets("工作表1").[E8]
  21.         If .Value = "" Then
  22.             MsgBox "查不到結果"
  23.         Else
  24.             MsgBox "最後有 " & .Value & "為:" & arr(1, I)
  25.         End If
  26.     End With
  27. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 7# starry1314
  1. Option Explicit '強制宣告 防止變數Key錯字,造成錯字誤以為變數
  2.     Sub Ex()
  3.         Dim arr(), str As String, brr() As String, I As Integer
  4.         Dim S As Variant, E As Integer
  5.         str = Sheets("工作表1").[c2].Value '讀取禁忌
  6.         'Sheets("工作表1").[E8] = "" '將儲存格清空
  7.         arr = Sheets("data").[a1].CurrentRegion.Rows(4).Value '讀取資料變數-列
  8.         For I = 2 To UBound(arr, 2) Step 2 '資料變數 以2欄做為一個數據
  9.             S = Split(str, ",") '將禁忌:以,區隔多條件
  10.             ReDim brr(0 To UBound(S))
  11.             'ReDim 陳述式 在程序層次中用來重新配置動態陣列變數的儲存空間。
  12.             '數組內元素的上限值 '如 5-10 等同UBound=10 ,LBound=5 下限值
  13.             For E = 0 To UBound(S) '依序導入數組內元素
  14.                 If InStr(arr(1, I), S(E)) Then brr(E) = "禁忌"
  15.             Next
  16.             S = Join(brr, "")
  17.             'Join 函數 傳回一個字串 , 該字串是透過連結某個陣列中的多個子字串而建立的
  18.             If S = "" Then
  19.                 Sheets("工作表1").[E8] = arr(1, I - 1)
  20.                 Exit For
  21.             End If
  22.         Next
  23.         With Sheets("工作表1").[E8]
  24.             If .Value = "" Then
  25.                 MsgBox "查不到結果"
  26.             Else
  27.                 MsgBox "最後有 " & .Value & "為:" & arr(1, I)
  28.             End If
  29.         End With
  30.     End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 能付出愛心就是福,能消除煩惱就是慧。
返回列表 上一主題