2017-05-15 57 views
-1

我在一個VB宏中工作,其中AUT Excel包含5張工作表。在第三張表中,我有6列在Excel VBA中匹配部分字符串

在第5張表中。我有3個輸入框和3個輸出框。 如果用戶從inputbox1,inputbox2和inputbox 3的第1列,第2列和第3列輸入部分字符串,則相應的結果應顯示在outputbox1,outputbox2,outputbox3中

但是,如果輸入字符串爲與具有更多價值的數據進行比較。所以它的類似硬編碼這個值在if條件下是不可行的。

`text3 Like "*NB" Or text3 Like 
    "*NS" Or text3 Like "*NF" Or text3 Like "*PE")` 

我得到這個代碼片段從圖中未顯示結果

答案
`If (text1 Like ("*" & text4 & "*") And text2 Like ("*" & text5 & "*") And text3 Like ("*" & text6 & "*")) Then` 

請letme知道如果有什麼我需要在IF條件添加到部分字符串匹配

+2

你的問題需要更具體的(你甚至沒有問一個問題),需要包括你的代碼,因爲Stack Overflow是不是免費的代碼編寫服務。請閱讀[問]然後[編輯]你的問題,並添加你已經嘗試過的代碼,並向它提出一個*特定*問題。另外[爲什麼「有人可以幫助我?」不是一個真正的問題?](https://meta.stackoverflow.com/a/284237/3219613)可能會幫助你提出一個很好的問題。 –

+0

編輯該問題。請檢查@Peh – newuser

+0

什麼是錯誤? –

回答

0

爲什麼不使用FindFindNext來代替。這將找到匹配input1的第一個實例,然後測試是否還滿足input2input3。如果是這樣,它設置你想要的值。如果不是,它會發現下一個可能的匹配。

Set Sheet1 = Worksheets(1) 

Dim c As Range 
Dim firstAddress As String 
With Sheet1.Columns(1) 
    Set c = .Find(input1, lookat:=xlPart) 
    If Not c Is Nothing Then 
     firstAddress = c.Address 
     Do 
      If sheet3.Cells(c.Row, 2).Value2 = input2 And sheet3.Cells(c.Row, 3).Value2 = input3 Then 
       Sheet5.Cells(13, 3).Value2 = Sheet1.Cells(c.Row, 5).Value2 
       Sheet5.Cells(13, 6).Value2 = sheet2.Cells(c.Row, 6).Value2 
       Sheet5.Cells(13, 9).Value2 = sheet3.Cells(c.Row, 4).Value2 
       Exit Do 
      Else 
       Set c = .FindNext(c) 
      End If 
     Loop While Not c Is Nothing And c.Address <> firstAddress 
    End If 
End With 
+0

我得到一個對象所需的錯誤@湯姆 – newuser

+0

@newuser你現在可以再試一次嗎 – Tom

+0

嗨。現在代碼運行良好,但輸出沒有正確顯示。請讓我知道,如果我堅持我的原代碼,然後而不是像我可以使用任何其他操作符匹配部分字符串 – newuser

0

你有沒有試過如下

If (input1 Like ("*" & output4 & "*") And input2 Like ("*" & output5 & "*") And input3 Like ("*" & output6 & "*")) 
+0

嗨所有。我會檢查一段時間,並讓你知道 – newuser

+0

嗨@Karthick Gunasekaran,我檢查了你提供的上述代碼,但它沒有顯示任何結果。我已經用輸出和代碼編輯了我的問題,以便您可以檢查 – newuser