Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi-确定Excel是否启用了过滤器_Excel_Delphi_Filter - Fatal编程技术网

Delphi-确定Excel是否启用了过滤器

Delphi-确定Excel是否启用了过滤器,excel,delphi,filter,Excel,Delphi,Filter,德尔福西雅图,Excel 2013。我有一个修改现有Excel文件的Delphi应用程序。如果工作表没有启用第1行筛选(即每列上的筛选下拉框),则我希望将其启用。我知道怎么打开它。问题是“打开它”实际上是一个切换,所以我需要确定它是否已经打开,而我似乎无法做到这一点。守则的适用部分包括: var aws: ExcelWorksheet; begin ... aws := oExcel.ActiveSheet as ExcelWorksheet; if aws.FilterMode[LOCA

德尔福西雅图,Excel 2013。我有一个修改现有Excel文件的Delphi应用程序。如果工作表没有启用第1行筛选(即每列上的筛选下拉框),则我希望将其启用。我知道怎么打开它。问题是“打开它”实际上是一个切换,所以我需要确定它是否已经打开,而我似乎无法做到这一点。守则的适用部分包括:

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;
问题是,即使第1行启用了筛选器,IF语句也总是返回FALSE。我尝试使用msoFalse而不是False,但随后出现了“不兼容类型”错误。请注意,我不想执行任何过滤,我只想显示下拉列表,以方便用户使用。我认为我的问题是,我正在检查是否实际实现了过滤器,而不是“我是否显示过滤器下拉列表”,但我不知道如何检查…

说:

要确定当前是否启用了筛选(即,工作表上是否显示筛选下拉箭头),请使用属性

如果工作表包含筛选列表且其中有隐藏行,则此属性为true

因此,请改用
AutoFilterMode

这样说:

要确定当前是否启用了筛选(即,工作表上是否显示筛选下拉箭头),请使用属性

如果工作表包含筛选列表且其中有隐藏行,则此属性为true


因此,请改用
AutoFilterMode

就是这样。。。完全错过了。谢谢就这样。。。完全错过了。谢谢