2017-09-26 37 views
0

Delphi Seattle、Excel 2013。既存のExcelファイルを変更するDelphiアプリケーションがあります。シートに行1のフィルタリングが有効になっていない場合(各列のフィルタのドロップダウンボックスと呼ばれます)、それをオンにします。私はそれをオンにする方法を知っています。問題は、「それをオンにする」ことは本当にトグルなので、私はそれがすでに行われているかどうかを判断する必要があります。これはできないようです。コードの該当部分は以下のとおりです。Delphi - Excelにフィルタが有効になっているかどうかを確認する

var 
aws: ExcelWorksheet; 
begin 
... 
aws := oExcel.ActiveSheet as ExcelWorksheet; 
if aws.FilterMode[LOCALE_USER_DEFAULT] = False then 
    aws.Cells.Item[1, 1].Rows.EntireRow.AutoFilter; 

問題は、私のIF文は常に行1は、フィルタが有効になっている場合でも、FALSEを返すということです。私はFalseの代わりにmsoFalseを使ってみましたが、 'Incompatible Type'というエラーが出ます。フィルタリングを実行したくないことに注意してください。ドロップダウンを表示して、ユーザーにとって使いやすいようにしてください。フィルタのドロップダウンを表示しているのとは対照的に、フィルタが実際に実装されているかどうかを確認することが問題だと思いますが、他の方法を調べる方法はわかりません...

答えて

3

Documentation for the FilterMode property

フィルタリングが現在有効であるかどうかを決定する(すなわち、フィルタドロップダウン矢印は、ワークシート上に表示されているかどうか、である)、AutoFilterModeプロパティを使用します。ワークシートは、隠された行がされたフィルタリングされたリストが含まれている場合

...

このプロパティは、です。

代わりにAutoFilterModeを使用してください。

+0

それはそれを完全に逃したのです。ありがとう! – user1009073

関連する問題