Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 989
Default Cells.find only reporting range in AutoFilter...

Years ago, someone here recommended that I use this to find the intersection
of the last used row and column, independant of whether data had been deleted
since the last save, etc:

reallastrow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
reallastcol = Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns,
xlPrevious).Column

I've just discovered that the reallastcol part doesn't work if an AutoFilter
is turned on.

Instead of the last used column in the worksheet, it reports the last used
column in the autofilter, ignoring the fact that columns may be used to the
right of the autofilter.

Suggestions?


  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Cells.find only reporting range in AutoFilter...


If objSheet.FilterMode Then objSheet.ShowAllData
--or--
If objSheet.FilterMode Then
MsgBox "Please turn off the auto filter"
Exit sub
End if
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)



"mark"
wrote in message
Years ago, someone here recommended that I use this to find the intersection
of the last used row and column, independant of whether data had been deleted
since the last save, etc:

reallastrow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
reallastcol = Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns,
xlPrevious).Column

I've just discovered that the reallastcol part doesn't work if an AutoFilter
is turned on.
Instead of the last used column in the worksheet, it reports the last used
column in the autofilter, ignoring the fact that columns may be used to the
right of the autofilter.
Suggestions?


  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 989
Default Cells.find only reporting range in AutoFilter...

If my intent were to turn off the auto-filter, then sure, I could do that, no
problem.

But that's not my intent. I guess I didn't state the problem well enough.

After the operations that my code will perform, I still want the autofilter
to be on; in fact, having it on will cause my code to need to do less work.

So, I don't want to turn it off. I could turn it off, find the cell
intersection, and then turn it back on, but then I'd have to write in an
array to remember what all the selected filters in the auto filter were, and
I wasn't in a mood to bother with that today, either.

I think I can do it by a combination of the usedrange.columns.count , and
the position of the first column in the used range (since Excel doesn't count
blank columns on the left as part of the used range, if there is nothing in
them).



"Jim Cone" wrote:


If objSheet.FilterMode Then objSheet.ShowAllData
--or--
If objSheet.FilterMode Then
MsgBox "Please turn off the auto filter"
Exit sub
End if
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)



"mark"
wrote in message
Years ago, someone here recommended that I use this to find the intersection
of the last used row and column, independant of whether data had been deleted
since the last save, etc:

reallastrow = Cells.Find("*", Range("A1"), xlFormulas, , xlByRows,
xlPrevious).Row
reallastcol = Cells.Find("*", Range("A1"), xlFormulas, , xlByColumns,
xlPrevious).Column

I've just discovered that the reallastcol part doesn't work if an AutoFilter
is turned on.
Instead of the last used column in the worksheet, it reports the last used
column in the autofilter, ignoring the fact that columns may be used to the
right of the autofilter.
Suggestions?



  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 3,290
Default Cells.find only reporting range in AutoFilter...


Sub GetLastCol()
MsgBox ReallyLastColumn
End Sub
'--
Function ReallyLastColumn()
Dim lngCol As Long
Dim N As Long
Dim lngRow As Long
With ActiveSheet.UsedRange
lngRow = .Rows(.Rows.Count).Row
End With
For N = 1 To lngRow
With ActiveSheet
lngCol = Application.Max(lngCol, .Cells(N, .Columns.Count).End(xlToLeft).Column)
End With
Next
ReallyLastColumn = lngCol
End Function
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)




"mark"
wrote in message
If my intent were to turn off the auto-filter, then sure, I could do that, no
problem.

But that's not my intent. I guess I didn't state the problem well enough.

After the operations that my code will perform, I still want the autofilter
to be on; in fact, having it on will cause my code to need to do less work.

So, I don't want to turn it off. I could turn it off, find the cell
intersection, and then turn it back on, but then I'd have to write in an
array to remember what all the selected filters in the auto filter were, and
I wasn't in a mood to bother with that today, either.

I think I can do it by a combination of the usedrange.columns.count , and
the position of the first column in the used range (since Excel doesn't count
blank columns on the left as part of the used range, if there is nothing in
them).
  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 989
Default Cells.find only reporting range in AutoFilter...

yeah, that would work. thanks for the suggestion...

see what you're doing...

1) finding the number of rows use
2) walking down the rows and finding the right-most used cell
3) keeping the max of that until you get through the number of rows used.

that would do it.

"Jim Cone" wrote:


Sub GetLastCol()
MsgBox ReallyLastColumn
End Sub
'--
Function ReallyLastColumn()
Dim lngCol As Long
Dim N As Long
Dim lngRow As Long
With ActiveSheet.UsedRange
lngRow = .Rows(.Rows.Count).Row
End With
For N = 1 To lngRow
With ActiveSheet
lngCol = Application.Max(lngCol, .Cells(N, .Columns.Count).End(xlToLeft).Column)
End With
Next
ReallyLastColumn = lngCol
End Function
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware
(Excel Add-ins / Excel Programming)




"mark"
wrote in message
If my intent were to turn off the auto-filter, then sure, I could do that, no
problem.

But that's not my intent. I guess I didn't state the problem well enough.

After the operations that my code will perform, I still want the autofilter
to be on; in fact, having it on will cause my code to need to do less work.

So, I don't want to turn it off. I could turn it off, find the cell
intersection, and then turn it back on, but then I'd have to write in an
array to remember what all the selected filters in the auto filter were, and
I wasn't in a mood to bother with that today, either.

I think I can do it by a combination of the usedrange.columns.count , and
the position of the first column in the used range (since Excel doesn't count
blank columns on the left as part of the used range, if there is nothing in
them).

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
formula to find a range of cells = to a value Gary Excel Worksheet Functions 4 December 31st 08 01:46 AM
autofilter is hiding cells outisde of the range I am trying to fil dpolking Excel Discussion (Misc queries) 1 October 1st 07 08:31 PM
Error proof way to find first blank Row after Autofilter Range [email protected] Excel Programming 6 July 1st 07 01:42 AM
Find a range of values in a range of cells Jack Taylor Excel Worksheet Functions 20 November 25th 06 01:26 PM
Reporting of Empty Cells Dennis Excel Worksheet Functions 5 January 2nd 05 10:26 AM


All times are GMT +1. The time now is 10:22 PM.

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

About Us

"It's about Microsoft Excel"