Excel VBA IFTTT-高级筛选范围值

Excel VBA IFTTT-高级筛选范围值,excel,vba,ifttt,Excel,Vba,Ifttt,我有一个脚本我正在工作,我几乎没有VBA脚本的实际知识,除了几年前的一堂大学课 我有这个剧本- Private Sub cmdContact_Click() Set DataSH = Sheet1 DataSH.Range("O8") = Me.cboSelect.Value DataSH.Range("O9") = Me.txtSearch.Text 'DataSH.Range("O9") = "*" &a

我有一个脚本我正在工作,我几乎没有VBA脚本的实际知识,除了几年前的一堂大学课

我有这个剧本-

Private Sub cmdContact_Click()
        Set DataSH = Sheet1
            DataSH.Range("O8") = Me.cboSelect.Value
            DataSH.Range("O9") = Me.txtSearch.Text
            'DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*"
            DataSH.Range("B8").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
                "phonelist!Criteria"), CopyToRange:=Range("phonelist!Extract"), 
Unique:= _
                False
                ListBox1.RowSource = 
Sheet1.Range("outdata").Address(external:=True)
End Sub
我关注的部分是

        DataSH.Range("O8") = Me.cboSelect.Value
        DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*"
        'DataSH.Range("O9") = Me.txtSearch.Text
由于通配符仅可用于文本,我只剩下3个cbo。选择不会搜索的值,因为它们是数字

如何将IFTTT语句应用于cboSelect的值

DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*"
通配符所需的值包括: -名字 -系 -头衔 -单位 -移位 -主管

DataSH.Range("O9") = Me.txtSearch.Text
通配符不兼容的值包括: -延伸 -建筑 -房间


感谢您的帮助

我在回答我自己的问题!我在几个小时的时间里反复尝试,终于找到了答案-

If DataSH.Range("O8").Value = "NAME" Or DataSH.Range("O8").Value = "DEPARTMENT" Or DataSH.Range("O8").Value = "TITLE" Or DataSH.Range("O8").Value = "UNIT" Or DataSH.Range("O8").Value = "SHIFT" Or DataSH.Range("O8").Value = "SUPERVISOR" Then DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*" Else DataSH.Range("O9") = Me.txtSearch.Text
很好,但是如果有人想帮我清理的话,我会很感激的。看来我不能让它工作,除非它都在一条线上

编辑:

了解了如何使用相同的if语句跨越多行-

If DataSH.Range("O8").Value = "NAME" Or _
    DataSH.Range("O8").Value = "DEPARTMENT" Or _
        DataSH.Range("O8").Value = "TITLE" Or _
            DataSH.Range("O8").Value = "UNIT" Or _
                DataSH.Range("O8").Value = "SHIFT" Or _
            DataSH.Range("O8").Value = "SUPERVISOR" Then
        DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*"
    Else
DataSH.Range("O9") = Me.txtSearch.Text
End If
编辑:

在另一个论坛上,有人提出了一种更好的方式来做我想做的事情。在此张贴供参考:

Dim Ary As Variant
Ary = Array("NAME", "DEPARTMENT", "TITLE", "UNIT", "SHIFT", "SUPERVISOR")
If UBound(Filter(Ary, DataSH.Range("O8").Value, True, vbTextCompare)) >= 0 Then
    DataSH.Range("O9") = "*" & Me.txtSearch.Text & "*"
Else
    DataSH.Range("O9") = Me.txtSearch.Text
End If
​​​​