2017-05-15 35 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