我正在尝试在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。
答案 0 :(得分:5)
您似乎拥有一个Unicode字符337 10 (基数为10而不是十六进制)。假设我们从:
开始并使用以下内容应用AutoFilter:
Sub Macro99()
Dim s As String
s = ChrW(337)
With Range("A1:A10")
.AutoFilter
.AutoFilter Field:=1, Criteria1:=s
End With
End Sub
将产生:
您可以将其应用于任何或所有工作表。
答案 1 :(得分:3)
虽然您可以为每个不会在VBA中“粘贴”的条目使用代码(例如"l"&ChrW(337)&"sütött"
),但是为列表使用某种形式的存储库会更容易。工作表是一个不错的选择,如果你想避免将其显示给用户,可以在以后隐藏它。
可选:使用参考:创建一个动态命名区域
=hidden!$A$2:index(hidden!$A:$A, match("žžž", hidden!$A:$A))
从列表中构建变量数组,并使用数组元素作为过滤器。
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
答案 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以获得所需的语言,您应该可以输入字符。