私はそのテーブルに格納されているブール値に基づいてフィルタリングするテーブルを持っています。値がTRUE
の場合はいつでも表示したいです。したがって、私はオートフィルタと次のVBAコードを使用します:異なる言語でのVBA Excel:ブールオートフィルタ条件の変換
lCol = tbl.ListColumns("xFilter").Index
With tbl
If .AutoFilter.FilterMode Then .AutoFilter.ShowAllData
.Range.AutoFilter Field:=lCol, Criteria1:="TRUE"
End With
これは完全に動作します。しかし、私はExcelの英語のインスタンスに取り組んでいます。別の言語(この場合はオランダ語)のインスタンスでこれを実行しようとするたびに、フィルタリングはもう機能しません。それを動作させるには、基準をWAAR
(オランダ語のTRUE
相当)に手動で設定する必要があります。
しかし、自分のプログラムが言語に依存しないようにするために、この1つのオートフィルタを除いて、そうであるようです。私はその後、私が書く必要があるだろうドイツとスペインに行くならば、しかし
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE"
:
Criteria1:="WAAR", Operator:=xlOr, Criteria2:="TRUE", Operator:=xlOr, Criteria3:="WAHR", Operator:=xlOr, Criteria4:="VERDADERO"
を私がする必要があるでしょう、私はmultiple criteria や状態を追加することができます知っています値がTRUE
かどうかを知りたければ、余分な条件を追加してください。
criteria1 := TRUE
はどの言語でも簡単に使用できますか?
使用 'Criteria1:= "TRUE"':= true'の代わりに 'Criteria1の? (AFAIK、VBAは、どの言語バージョンが使用されていても定数、メソッド、プロパティなどのために英語を使用しますが、Excel内で 'String'を' Boolean'にキャストしなければならない場合は、そのExcelのバージョンに)。 – YowE3K
これは動作していないようです。私は 'Criteria1:= TRUE'を試しましたが、うまくいきませんでした。 VBAがTRUEを変数名と考えることができると思いました。だから、変数 'Tr = TRUE'に続いて' Criteria1:= Tr'を設定しましたが、それでもうまくいきませんでした。 –
カラム 'lCol'の式があれば、' 1'や '回避策として「0」の結果(例えば、 '= IF(foo、1,0)')? –