数据源
短节 %%c700×16  L=380
接管 %%C168.3×7.1 L=151
筒体 %%c700×10 L=5509
定距管%%C25×2.5 L=150
换热管%%C25×2.5 L=6000 
现在采用的是If...End if语句,语句太长,看起来也不直观。如
----------------------
  If Str Like "*筒*" Or Str Like "*接管*" Or Str Like "*定距管*" Or Str Like "*EHA*" _
       Or Str Like "*换热管*" Or Str Like "*短节*" Or Str Like "*挡管*" Or Str Like "*板*" Then
----------------------
请问各位大侠是否有更简单的方法。
谢谢。

解决方案 »

  1.   

    条件太多,咋写都长
    instr?
      

  2.   

    Private Sub Form_Load()
        Dim reg As Object
        Dim s As String
        
        s = "短节 %%c700×16 L=380"
        Set reg = CreateObject("vbscript.regexp")
        reg.Global = True
        reg.IgnoreCase = True
        reg.Pattern = "筒|接管|定距管|换热管|短节|挡管|挡管"
        
        If reg.test(s) Then
            MsgBox "match ok!"
        End If
    End Sub
      

  3.   

    漏了个EHA,自己加上,应该看的懂吧,用|隔开,有多少隔多少
      

  4.   


    Private Sub Command1_Click()
       Dim a As String, b() As String, f As Boolean
       a = "定距管%%C25×2.5 L=150"
       b = Split("短节 接管 筒体 定距管 换热管")
       For i = 0 To UBound(b)
           f = f Or InStr(a, b(i))
           If f Then Exit For
       Next
       If f Then
          Debug.Print i + 1
       Else
          Debug.Print "not"
       End If
        End Sub
      

  5.   

    (短节|接管|筒体|定距管|换热管)\D+(\d+(\.\d+)?)\D+(\d+(\.\d+)?)\D+(\d+(\.\d+)?)
    分别取:2,4,6分组就是你要的结果。
      

  6.   

    Function SplitVbScript(StrData)
        Dim Str
        With CreateObject("vbscript.regexp")
            .Global = True
            '完全分离数字
            .Pattern = "[^.0-9\r]{1,}"
                    strData2 = Trim(.Replace(StrData, ","))
        End With    SplitVbScript = Mid(strData2, 2, Len(strData2) - 1)
    End FunctionFunction FDAFDA()
      Dim Str
      Str = "100-12"
      Arr = Split(SplitVbScript(Str), ",")
    End Function
    分离的结果是
    100,12→
    100
    12