如何在VBA中过滤''ő''字符?

时间:2016-09-28 12:31:59

标签: excel vba excel-vba-mac

我正在尝试在excel中构建一个适用于所有页面的过滤器,但是,由于我的语言,有一个字符(ő),我无法进入VBA编辑器。

有什么想法吗?

我目前正在使用此代码:

使用工作表(q) '在循环过程中选择每个工作表,我们将Autofilter应用于特定条件。我们希望过滤掉所有名字以H开头的人 .Range(“A1”)。AutoFilter字段:= 1,Criteria1:= Array(“Bazsalikom”,“Koriander”,“Barna Rizs”,“JázminRizs”,“Fafülgomba”,“Csirke(elősütött”< / strong>,“豆腐(kockázott)”,“Fejeskáposzta(csíkozott)”,“Kínaikel(szeletelt)”,“Szójacsíra”,“Vöröshagyma(csíkozott)”,“Marha(elősütött)” ,“Újhagyma(szeletelt)”,“Sárgarépa(csíkozott)”,“Karfiol(forrázott)”,“KápiaPaprika”,“Bambuszrügy(konzerv)”,“Sertés(elősütött)”“Kacsa(elősütött)”,“Rák(mirelit)”,“Csiperke Gomba”,“Cukkini(szeletelt)”,“Kaliforniai Paprika”,“Brokkoli(forrázott)”,“Ananász(konzerv - ételhez) “),运算符:= xlFilterValues 结束 下一个q 结束子

我突出显示了有问题的项粗体。我在Mac上使用Office 2016。

5 个答案:

答案 0 :(得分:5)

您似乎拥有一个Unicode字符337 10 (基数为10而不是十六进制)。假设我们从:

开始

enter image description here

并使用以下内容应用AutoFilter:

Sub Macro99()
    Dim s As String

    s = ChrW(337)

    With Range("A1:A10")
        .AutoFilter
        .AutoFilter Field:=1, Criteria1:=s
    End With
End Sub

将产生:

enter image description here

您可以将其应用于任何或所有工作表。

答案 1 :(得分:3)

虽然您可以为每个不会在VBA中“粘贴”的条目使用代码(例如"l"&ChrW(337)&"sütött"),但是为列表使用某种形式的存储库会更容易。工作表是一个不错的选择,如果你想避免将其显示给用户,可以在以后隐藏它。

filter_terms

  

可选:使用参考:创建一个动态命名区域=hidden!$A$2:index(hidden!$A:$A, match("žžž", hidden!$A:$A))

从列表中构建变量数组,并使用数组元素作为过滤器。

dict_filter_before

Option Explicit

Sub keyedFilter()
    Dim fltr As Range, a As Long, arr As Variant

    'load the array
    With Worksheets("Hidden")
        With .Range(.Cells(2, "A"), .Cells(.Rows.Count, "A").End(xlUp))
            arr = Application.Transpose(.Cells.Value2)
        End With
    End With

    'filter the data
    With Worksheets("Sheet2")
        If .AutoFilterMode Then .AutoFilterMode = False
        With .Cells(1, 1).CurrentRegion
            '.AutoFilter field:=1, Criteria1:=dDICT.keys, Operator:=xlFilterValues
            .AutoFilter field:=1, Criteria1:=arr, Operator:=xlFilterValues
            With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
                If CBool(Application.Subtotal(103, .Cells)) Then

                    'there are filtered values.
                    'sample image was taken here

                End If
            End With
        End With
        If .AutoFilterMode Then .AutoFilterMode = False
    End With
End Sub

Sub reallyHideHidden()
    With Worksheets("Hidden")
        .Visible = xlVeryHidden
    End With
End Sub

dict_filter_after

答案 2 :(得分:2)

我会在你的位置做的就是在excel中写字符并从那里引用它。把它写在某种设置表中。

答案 3 :(得分:1)

唯一的方法是将其发布到单元格(比如说A1),然后引用该单元格值来过滤你的范围(比如C1:F4) - ActiveSheet.Range("$C$1:$F$4").AutoFilter Field:=2, Criteria1:="=*" & Range("A1").Value & "*", Operator:=xlAnd

答案 4 :(得分:-1)

您是否尝试过在VBA编辑器中更改字体。(工具/选项/编辑器格式) 切换到Times New Roman以获得所需的语言,您应该可以输入字符。