# Revision history [back]

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (invisible).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g. it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False for the visible Rows.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to IsFiltered. They also have their original .Height settings, but are set to IsVisisble=Fale.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection ThisComponent.CurrentSelection will only contain the subranges not filtered away (invisible).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() mySheet.GetCellRangeByName() e.g. it has a .Rows .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered .IsFiltered having the Value True for rows "filtered" away and False for the visible Rows. False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to IsFiltered.IsFiltered=True. They also have their original .Height .Height settings, but are set to IsVisisble=Fale.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (invisible). (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g. e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale..

===Amendment=== I don't know a comfortable way to just get unfiltered rows.
There is a CellRange method to get the visible parts: theRange.QueryVisibleCells(). If you can assure that there are no rows hidden though not filtered, you may do something like demonstrated in the attached example.
Please report i you find a better way.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale.

===Amendment=== I don't know a comfortable way to just get unfiltered rows.
There is a CellRange method to get the visible parts: theRange.QueryVisibleCells(). If you can assure that there are no rows hidden though not filtered, you may do something like demonstrated in the attached example.
Please report i you find a better way.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale.

===Amendment=== I don't know a comfortable way to just get unfiltered rows.
There is a CellRange method to get the visible parts: theRange.QueryVisibleCells(). If you can assure that there are no rows hidden though not filtered, you may do something like demonstrated in the attached example.
(Attachment updated 2018-10-19 15:22 CEST)
Please report i you find a better way.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale.

===Amendment=== ===Amendment1===
I don't know a comfortable way to just get unfiltered rows.
There is a CellRange method to get the visible parts: theRange.QueryVisibleCells(). If you can assure that there are no rows hidden though not filtered, you may do something like demonstrated in the attached example.
(Attachment updated 2018-10-19 15:22 CEST)

===Amendment2===
See the new demo announced in my recent the comment.

Please report i if you find a better way.

If you are decisive about working with custom code there are three things you should know:
-1- If you visually (UI) select a filtered range, the ThisComponent.CurrentSelection will only contain the subranges not filtered away (also invisible then).
-2- If you create a com.sun.star.sheet.SheetCellRange object (by mySheet.GetCellRangeByName() e.g.) it has a .Rows property giving acces to each row intersecting the range. Each row object has a Boolean property .IsFiltered having the Value True for rows "filtered" away and False otherwise.
-3- Rows hidden without using a filter (by direct user action e.g.) are not set to .IsFiltered=True. They also have their original .Height settings, but are set to IsVisisble=Fale.

===Amendment1===
I don't know a comfortable way to just get unfiltered rows.
There is a CellRange method to get the visible parts: theRange.QueryVisibleCells(). If you can assure that there are no rows hidden though not filtered, you may do something like demonstrated in the attached example.
(Attachment updated 2018-10-19 15:22 CEST)

===Amendment2===
See the new demo announced in my recent the comment.

Please report if you find a better way.