Solved

Select next Empty row in a filtered table: Excel VBA

Posted on 2014-02-13
6
637 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
ID: 39855958
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
ID: 39855979
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
ID: 39933948
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
ID: 40017349
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 47

Expert Comment

by:Martin Liss
ID: 40432305
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

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction While answering a recent question (http:/Q_27311462.html), I created an alternative function to the Excel Concatenate() function that you might find useful.  I tested several solutions and share the results in this article as well as t…
This article descibes how to create a connection between Excel and SAP and how to move data from Excel to SAP or the other way around.
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
This Micro Tutorial will demonstrate on a Mac how to change the sort order for chart legend values and decrpyt the intimidating chart menu.

726 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