Solved

Select next Empty row in a filtered table: Excel VBA

Posted on 2014-02-13
6
478 Views
Last Modified: 2014-11-10
Help, help, help.  I'm driving myself crazy!

I have a table of data which several people use.
I have developed a process to add rows of data at the bottom of the table.
If the table is left filtered by the last user, the code that I use to select the next row does not work.

(I know there are work-arounds, such as ShowAllData, or remove autofiltermode.  I would like to know if there is a way to do it without resorting to that, though, keeping the integrity of the filter.)

My code:
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select

Open in new window

works fine if the filter is set to show all data.
However, if the data is fitered, it will obviously only work if the bottom row is included in the filter.

I have tried the following:
selection.SpecialCells(xlCellTypeVisible).Offset(1, 0).Select

Open in new window

but that just returns an application or object defined error

I have also tried:
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).SpecialCells(xlCellTypeVisible).Select

Open in new window

.  That, however, selects all cells EXCEPT for the filtered cells

I am missing something obvious, perhaps. Can't see the wood for the trees.

Sample table attached
Thanks very much
David
FilteredTable-Sample.ExpExch.140.xlsm
0
Comment
Question by:David Phelops
6 Comments
 
LVL 24

Accepted Solution

by:
Steve earned 250 total points
Comment Utility
OK, I would suggest converting your table to an actual "Table"
Highlighting the data and using Insert > Table.

Then the table can be manipulated far easier in VBA.
To add a row use:
    Range("Table1").ListObject.ListRows.Add AlwaysInsert:=True

Open in new window


See attached copy of your file.
FilteredTable-Sample.ExpExch.140.xlsm
0
 

Author Comment

by:David Phelops
Comment Utility
Thanks Steve, that looks like a leap forward in technique.

I am still really intrigued, however, as to how to select the next empty row, if the list is filtered (without converting to a listobject).

Cheers
David
0
 
LVL 10

Assisted Solution

by:broro183
broro183 earned 250 total points
Comment Utility
hi David,

I wrote a "AttemptAtARobustLastCellFinder_v4 function" & it was accepted as the solution in this thread. It may help you in your current situation. The function is powered by "Application.CountA" to identify blank or non-blank rows/columns even if the specific cell is hidden, eg by a filter.

If there is no other data below your filtered range, you can probably use my function "as is". If there is data below the range, you could just make use of the concept & use "Application.CountA" within your code.

hth
Rob
0
 

Author Comment

by:David Phelops
Comment Utility
Apologies for a long absence!

Thanks very much for posting this potential solution.  I have to admit that a lot of it is a bit over my head at my stage.  I will try and understand what it is doing.  

The work-around that I used was to identify the filter and then remove and replace it as necessary, making it easy to find the last row.

Not a robust and technically elegant solution, I grant you, but simple for me!

I do really appreciate the trouble that everyone takes to answer questions, so again an apology for a long absence.
0
 
LVL 45

Expert Comment

by:Martin Liss
Comment Utility
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.
0

Featured Post

Better Security Awareness With Threat Intelligence

See how one of the leading financial services organizations uses Recorded Future as part of a holistic threat intelligence program to promote security awareness and proactively and efficiently identify threats.

Join & Write a Comment

A2 = A1 That kind of cell reference is relative.  If you copy it from A2 to B2, then B2 will get this: B2 = B1 That's all fine and good, but if you then insert a new row above row 2, you'll find: A3 = A1 B3 = B1 This is intentional. …
Introduction This Article is a follow-up to my Mappit! Addin Article (http://www.experts-exchange.com/A_2613.html), it was inspired by an email posting I made to EUSPRIG (http://www.eusprig.org/index.htm), I will briefly cover: 1) An overvie…
Viewers will learn the basics of slicers and timelines for both PivotTables and standard Excel tables in Excel 2013.
This Micro Tutorial will demonstrate how to use a scrolling table in Microsoft Excel using the INDEX function.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

6 Experts available now in Live!

Get 1:1 Help Now