【问题标题】:VBA UserForm: Filter Name with square BracketVBA UserForm:带方括号的过滤器名称
【发布时间】:2015-09-14 23:52:40
【问题描述】:

我在使用方括号搜索名称时遇到问题:例如 Peter[Jones] (combobox1)。找不到那个名字?

如何解决这个问题?任何人都可以提供帮助或建议

Dim a, LngIndex As Long
Dim ytCrit, mtCrit, dtCrit As Long
Dim yuCrit, muCrit, duCrit As Long
Dim sCrit As String
Dim tCrit, uCrit As Date
Dim vCrit, wCrit As Long
Dim tngSource As Range
Dim LastRow As Long

LastRow = Worksheets("Sheet2").Cells(Cells.Rows.Count, "K").End(xlUp).Row

On Error Resume Next

Set tngSource = Worksheets("Sheet2").Range("A2:K" & LastRow)

sCrit = "*" & UCase(ComboBox1) & "*"
With ListBox1
    For a = .ListCount - 1 To 0 Step -1
        If Not UCase(.List(a, 1)) Like sCrit Then
            .RemoveItem a
        End If
    Next a
End With

【问题讨论】:

  • 如果您使用Like,则必须对模式中的special for Like 字符进行转义。在您的特定情况下,只需使用InStr

标签: vba filter userform brackets square-bracket


【解决方案1】:

...使用方括号搜索名称:例如 Peter[Jones]

Like 运算符的方括号[] 包含要在匹配中搜索的字符列表。这并不意味着像“[Jones]”这样的名称是可选的。

所以s Like "[Jones]" 将匹配任何包含 J、o、n、e 或 s 的内容。

正如用户 GSerg 所写,使用 InStr 函数在字符串中搜索子字符串。搜索将区分大小写。

【讨论】:

    猜你喜欢
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多