Excel VBA IFTTT-高级筛选范围值
我有一个脚本我正在工作,我几乎没有VBA脚本的实际知识,除了几年前的一堂大学课 我有这个剧本-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
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