2016-09-28 4 views
3

私はすべてのページに適用されるExcelでフィルタを作成しようとしていますが、私の言語のために、VBAエディタに入力できない文字(ő)があります。VBAで '' ''文字をフィルタリングする方法は?

アイデア?ワークシート(Q)が

「私たちは、特定の基準にオートフィルタを適用するループ処理で選択各ワークシート付:

私は現在、このコードを使用しています。 AutoFilterフィールド:= 1、Criteria1:= Array( "Bazsalikom"、 "Koriander"、 "Barna Rizs"、 "JázminRizs"、 " "Fafülgomba" "Csirke(elősütött"、 "豆腐(kockázott)"、 "Fejeskáposzta(csíkozott)"、 "畿内KEL(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ápiaパプリカ"、 "Bambuszrügy(konzerv)" "Sertés(elősütött)"" Kacsa( )、オペレーター:= xlFilterValues( "xlFilterValues");、 "ラーク(mirelit)"、 "Csiperke Gomba"、 "Cukkini(szeletelt)"、 "Kaliforniai Paprika"、 "Brokkoli(forrázott)"、 "Ananász(konzerv - ételhez) E ND 次のq End Subの

で、私は問題の項目に大胆を強調しました。私はMacでOffice 2016を使用しています。

+0

@gserg - 適切で重複していません。長いリストで無効な文字が発生する可能性が高いため、ワークシートから読み込まれたDictionaryオブジェクトを使用する方法があります。 \ – Jeeped

+0

@Jeeped私はまだ投票が終わるとすぐに終了するという事実にはまだ慣れていません。 – GSerg

+0

[Visual Basic Editorで通貨記号を入力する方法]の複製があります。(http://stackoverflow.com/q/24384952/11683) – GSerg

答えて

2

私があなたのところでやることは、文字をExcelに書き込んでそこから参照することです。何らかの設定テーブルにそれを書いてください。

-1

VBAエディタでフォントを変更しようとしましたか(ツール/オプション/エディタ形式) Times New Romanに切り替えて、文字を入力できるようにしてください。

+1

VBAコードモジュールはANSIで保存されます。 Unicode以外のプログラムの現在のWindowsコードページでサポートされている文字のみを入力できます。一方、ExcelセルはUnicodeをサポートしており、そこに任意の文字を配置することができます。 – GSerg

5

ユニコード文字があると思われます。337 (16進数ではなく、10進数)

enter image description here

としてオートフィルタを適用します:

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

あなたはいずれか、またはすべてのワークシートにこれを適用することができます。

+2

ウィンドウの地域設定が適切なコードページに設定されていると仮定すると、Alt + 0151で直接入力することもできます。 – Comintern

+2

偉大な答え...しかし... 10進数のユニコード値を示すためにあなたの下付き文字を理解していないかもしれない人々のための少し混乱IMOです...まだupvoted(プラスあなたはそれに早く私を打つ! ) –

+0

@RobinMackenzieコメントをいただきありがとうございます...私は答えを調整しました。 –

1

唯一の方法です(C1を言う:F4)あなたの範囲をフィルタリングするために、そのセルの値を参照し、その後、(A1言う)のセルにそれを投稿 - ActiveSheet.Range("$C$1:$F$4").AutoFilter Field:=2, Criteria1:="=*" & Range("A1").Value & "*", Operator:=xlAnd

3

あなたがエントリのそれぞれのコードを使用することができますがそれはVBA(例えば"l"&ChrW(337)&"sütött")に「固執」しないので、あなたのリストにいくつかの形式のリポジトリを使用する方が簡単です。ワークシートは適切な選択肢になり、ユーザーにこれを表示させたくない場合は後で非表示にすることができます。

​​

オプション:
=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

+0

Macでこれを実行しているという事実を含む最近の編集を見ました。 MacでScripting.Dictionaryを使用できるかどうかはわかりませんが、ワークシートリストから配列を作成できます。 – Jeeped

+0

うん、[それはMacで動作しません](http://stackoverflow.com/questions/5702362/vba-collection-list-of-keys/5702529#comment47733642_5702529)。 – GSerg

+0

私の辞書から上記の配列への変更を見てください。 – Jeeped

関連する問題