Three tables on one worksheet, need to hide rows

G

Guest

Despite my limitation with writing codes, I need to find a simple to follow
code to hide rows without information in a specific column in three tables
that I have on a single spreadsheet. The information on all these tables
comes from another spreadsheet within the workbook hence upon changed to it,
the information in my tables also changes.

The table ranges are A67:I139, A171:I243 and A275-I347
They have the same number of rows but varying number of columns due to some
merged columns. I want to hide rows that are blank in column 2 (in other
words, display rows that are non-blank in column 2 in all the tables.
Is this something that I can do with a code.
 
D

Dave Peterson

One way:

option explicit
sub testme01()
dim myAddresses as variant
dim myCell as range
dim iCtr as long

myAddresses = array("b67:b139","b171:b243","B275:b347")

with worksheets("sheet99")
for ictr = lbound(myaddresses) to ubound(myaddresses)
for each mycell in .range(myaddresses(ictr)).cells
mycell.entirerow.hidden = (mycell.value = "")
next mycell
next ictr
end with

end sub
 
G

Guest

Dave thanks for the code, do you mind telling me what it says - I apologize
that my knowledge of codes is limited, but once I am told what it means, I am
able to follow and troubleshoot any problems I might have.
 
D

Dave Peterson

It looks through each cell in each of those ranges. Then if that cell is "", it
hides the row.

(mycell.value = "")

will evaluate to true or false depending on what's in that cell.
 
G

Guest

I copied the code as is, and when I ran it, I got a subscription out of range
error. How do I fix that? Does it make any difference that one of the tables
has a merged column B & C?
 
D

Dave Peterson

I'm guessing that the error occurs on this line:

with worksheets("sheet99")

Change Sheet99 to the correct name.
I copied the code as is, and when I ran it, I got a subscription out of range
error. How do I fix that? Does it make any difference that one of the tables
has a merged column B & C?
 
G

Guest

I had done that, thought I looked at it again and corrected an error.
I re-ran the macro, but the spreadsheet flickers as though it is doing
something but nothing happens still. I really hate to be a bother on this,
if it is possible to even show you what I am working on, I will gladly send
you a copy. Anything else you can think of that I am doing wrong?
 
G

Guest

Dave, its doing something!! It's hiding all the rows that have the blank
value that are in between upto the last row with data - except that this row
is not the last - how do I get it to look at all the rows within the range?

A little step is better than nothing - I am ready thanking you.
 
D

Dave Peterson

Make sure this line:
myAddresses = array("b67:b139","b171:b243","B275:b347")
includes all your rows.

You can even get by with:
myAddresses = array("b67:b139,b171:b243,B275:b347")

But you'll still have to make sure you include the rows you want.
Dave, its doing something!! It's hiding all the rows that have the blank
value that are in between upto the last row with data - except that this row
is not the last - how do I get it to look at all the rows within the range?

A little step is better than nothing - I am ready thanking you.
 
G

Guest

I have pasted the code you gave me and for some reason, I still cannot get it
to look through all the rows. Am I missing something? And do I always have
to run the macro each time I want to hide the rows or can I automate it - say
everytime you click on the worksheet?

It's under General macros on the worksheet
Sub Hide_Blanks()
Dim myAddresses As Variant
Dim myCell As Range
Dim iCtr As Long

myAddresses = Array("b67:b140", "b171:b245", "b275:b350")

With Worksheets("SERVICE CONFIRMATION")
For iCtr = LBound(myAddresses) To UBound(myAddresses)
For Each myCell In .Range(myAddresses(iCtr)).Cells
myCell.EntireRow.Hidden = (myCell.Value = " ")
Next myCell
Next iCtr
End With

End Sub
 
D

Dave Peterson

What rows are missing?

And you changed this line:
mycell.entirerow.hidden = (mycell.value = "")
to:
myCell.EntireRow.Hidden = (myCell.Value = " ")

maybe it shouldn't have been changed.

or maybe it should have been changed to:
mycell.entirerow.hidden = (trim(mycell.value) = "")

Depends on what's in those cells.
I have pasted the code you gave me and for some reason, I still cannot get it
to look through all the rows. Am I missing something? And do I always have
to run the macro each time I want to hide the rows or can I automate it - say
everytime you click on the worksheet?

It's under General macros on the worksheet
Sub Hide_Blanks()
Dim myAddresses As Variant
Dim myCell As Range
Dim iCtr As Long

myAddresses = Array("b67:b140", "b171:b245", "b275:b350")

With Worksheets("SERVICE CONFIRMATION")
For iCtr = LBound(myAddresses) To UBound(myAddresses)
For Each myCell In .Range(myAddresses(iCtr)).Cells
myCell.EntireRow.Hidden = (myCell.Value = " ")
Next myCell
Next iCtr
End With

End Sub
 
G

Guest

Dave - Your are the best - thank you very much. I think it had to do with
the cell content even though it was blank - some cells had text others had
numbers and I had to find a way to make it consistent. Thanks a million -
you have no idea how much this has helped.
 
D

Dave Peterson

Glad you got it working!
Dave - Your are the best - thank you very much. I think it had to do with
the cell content even though it was blank - some cells had text others had
numbers and I had to find a way to make it consistent. Thanks a million -
you have no idea how much this has helped.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top