Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 74
Default Autofilter or SpecialCells-related bug?

Greetings! Have run into an apparent glitch, would appreciate any ideas.

Briefly:
1. Selection.AutoFilter Field:=2, Criteria1:="Test" ' isolate rows of
interest using an autofilter
2. Range("B1").Offset(1).Select ' select first data cell below header cell
3. Range(Selection,
Selection.End(xlDown)).SpecialCells(xlCellTypeVisi ble).Select ' select
filtered cells
4. Set Config = Selection ' assign handle to the range collection

Up to here, everything is okay, sort of. If there is at least one visible
row in the filtered list, then Config.count accurately reflects the number
of autofiltered rows (cells, actually), and Config can be used as a
collection for subsequent processing.

HOWEVER, if there are no filtered cells (meaning no data row is visible in
the autofilter), then Config.count is not zero but rather is some large
number (less than total number of rows in data set).

Q1: What is it doing? Is this somehow self-inflicted?
Q2: As a work-around, what are options to identify what should be an empty
collection?

Office 2003 with all updates.

Thanks!
George


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 5,600
Default Autofilter or SpecialCells-related bug?

Hi George,

No glitch. Manually replicate your scenario, with B3 selected in the hidden
cell, Ctrl-Shift End down-arrow, F5 Special Visible cells.
You will end up with all cells in col-B below your filter range selected
with a large row count

For ideas -
Sub test2()
Dim rng As Range
If ActiveSheet.AutoFilterMode Then
' change 1 to column within the Filter range of interest
Set rng = ActiveSheet.AutoFilter.Range.Columns(1)
Set rng = rng(1).Offset(1).Resize(rng.Rows.Count - 1)

On Error Resume Next
Set rng = rng.SpecialCells(xlCellTypeVisible)
On Error GoTo 0

If rng Is Nothing Then
MsgBox "no visible cells in filter range"
Else
MsgBox rng.Rows.Count
End If
End If
End Sub

If your filter range is +16k rows, SpecialCells might fail if every other
row is invisible and trying to return more than 8192 non-contiguous ares of
cells. Workaround if necessary.

Regards,
Peter T


"G Lykos" wrote in message
...
Greetings! Have run into an apparent glitch, would appreciate any ideas.

Briefly:
1. Selection.AutoFilter Field:=2, Criteria1:="Test" ' isolate rows of
interest using an autofilter
2. Range("B1").Offset(1).Select ' select first data cell below header

cell
3. Range(Selection,
Selection.End(xlDown)).SpecialCells(xlCellTypeVisi ble).Select ' select
filtered cells
4. Set Config = Selection ' assign handle to the range collection

Up to here, everything is okay, sort of. If there is at least one visible
row in the filtered list, then Config.count accurately reflects the number
of autofiltered rows (cells, actually), and Config can be used as a
collection for subsequent processing.

HOWEVER, if there are no filtered cells (meaning no data row is visible in
the autofilter), then Config.count is not zero but rather is some large
number (less than total number of rows in data set).

Q1: What is it doing? Is this somehow self-inflicted?
Q2: As a work-around, what are options to identify what should be an

empty
collection?

Office 2003 with all updates.

Thanks!
George




  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,494
Default Autofilter or SpecialCells-related bug?

here's what i've done in the past. lest say my range is a5:s8932.
i use these statements to determine the first and last row
fRow = range("A5:s8932").CurrentRegion.Offset(1,
0).SpecialCells(xlCellTypeVisible).Row
lRow = range("A5:s8932").CurrentRegion.SpecialCells(xlCel lTypeLastCell).Row

then, if the first row = 5, i know there are no records, because it's the header
row.


--


Gary


"G Lykos" wrote in message
...
Greetings! Have run into an apparent glitch, would appreciate any ideas.

Briefly:
1. Selection.AutoFilter Field:=2, Criteria1:="Test" ' isolate rows of
interest using an autofilter
2. Range("B1").Offset(1).Select ' select first data cell below header cell
3. Range(Selection,
Selection.End(xlDown)).SpecialCells(xlCellTypeVisi ble).Select ' select
filtered cells
4. Set Config = Selection ' assign handle to the range collection

Up to here, everything is okay, sort of. If there is at least one visible
row in the filtered list, then Config.count accurately reflects the number
of autofiltered rows (cells, actually), and Config can be used as a
collection for subsequent processing.

HOWEVER, if there are no filtered cells (meaning no data row is visible in
the autofilter), then Config.count is not zero but rather is some large
number (less than total number of rows in data set).

Q1: What is it doing? Is this somehow self-inflicted?
Q2: As a work-around, what are options to identify what should be an empty
collection?

Office 2003 with all updates.

Thanks!
George




Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
VB Question - AutoFilter related - 'Criteria1:' secion of my code Midnight[_2_] Excel Programming 6 August 13th 07 05:17 PM
How are these uses of SpecialCells different? M. Authement Excel Programming 0 May 28th 07 08:16 PM
SpecialCells mike Excel Programming 4 June 8th 06 01:50 AM
Specialcells Bruno Uato Charts and Charting in Excel 0 October 7th 05 07:42 PM
AutoFilter /specialcells Ron de Bruin Excel Programming 8 January 13th 04 03:45 PM


All times are GMT +1. The time now is 01:20 AM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"