确定行是否被用户过滤

我已经写了一个Excel插件。 一切正常,一直到一点。 假设我遍历所有的行,做一些工作…用户可能已经启用了一个filter,以便当前行由于该filter不可见。 如何确定不应该处理哪些数据,因为由于filter而不可见?

以前的答案的决定不适合我,所以我通过使用aSheet.Rows [RowNum] .Hidden属性find另一个更简单的解决scheme:

function IsRowVisible(aSheet: OLEVariant; aRowNum: Integer): Boolean; begin Result := not aSheet.Rows[aRowNum].Hidden; end; 

在这个函数中aSheet – excel工作表和aRowNum – 行号。 相同的解决scheme可以用于列。

find答案。 似乎没有一个row.filtered属性。 有一个隐藏属性,但它是在范围,而不是行。

解决scheme:根据整行构build一个范围,然后检查Hidden属性。

 function IsRowVisible(RowNum: Integer): Boolean; var FilterRange: OleVariant; RangeText: String; begin RangeText := 'A' + IntToStr(RowNum); // aws is my activesheet FilterRange := aws.Range[RangeText, RangeText].EntireRow; Result := not(FilterRange.EntireRow.Hidden); end;