How do I hide certain columns in a sheet with merged cells in a row using a macro?

D

Dan E

I'm having trouble with a macro that is meant to hide selected columns in a
worksheet (see below). Not only does it hide the columns I want hidden, but
it also hides all columns between and to the left of the selected range.
Testing on a blank sheet I've verified that the problem appears to be that I
have title rows in the sheet, which use merged cells in a row, basically
covering the whole range of columns the macro operates on, so that for
example A7:AQ7 are merged into a single cell. Could anyone suggest a way
round it, please? I realize that I could include in the macro actions that
would unmerge the title cells before running the hide part of the macro,
then merge the title cells again, BUT the title cells are many and vary in
cell coverage, and it would require a great deal of selecting. I feel that
there must be a way round this, but I have very little VBA knowledge. All
suggestions and help VERY gratefully received and acknowledged.

Macro:-
_______
Sub Hide_2wk_Macro3()

Range( _
"C:C,D:D,F:F,G:G,I:I,J:J,L:L,M:M,O:O,P:p,R:R,S:S,U:U,V:V,Z:Z,AA:AA,AD:AD,AC:AC,AF:AF,AG:AG,AI:AI,AJ:AJ,AL:AL,AM:AM,AO:AO,AP:AP,AR:AR,AS:AS"
_
).Select
Range("AS1").Activate
Selection.EntireColumn.Hidden = True
Range("A5").Activate
End Sub
_________
TIA

Dan E
 
D

Dan E

Correction - just tested again on a blank sheet with merged cells covering
all or portions of rows in the range, and this macro works OK on that sheet.
THEN I tested the same macro on the for-real sheet, and it worked like a
charm. Sorry to have troubled you all!

Macro that worked:-
________________
Sub Hide_2wk_new_recorded()

Range( _
"C:C,D:D,F:F,G:G,I:I,J:J,L:L,M:M,O:O,P:p,R:R,S:S,U:U,V:V,Z:Z,AA:AA,AC:AC,AD:AD,AF:AF,AG:AG,AI:AI,AJ:AJ,AL:AL,AM:AM,AO:AO,AP104:AP105,AR:AR,AS:AS"
_
).Select
Selection.EntireColumn.Hidden = True
Range( _
"A5:B5,E5:E5,H5:H5,K5:K5,N5:N5,Q5:Q5,T5:T5,V5:Y5,AB5:AB5,AE5:AE5,AH5:AH5,AK5:AK5,AN5:AN5,AQ5:AQ5"
_
).Select
Selection.EntireColumn.Hidden = False
Range("A5").Activate
End Sub
_______________
Dan E
 
T

Tom Ogilvy

Remove the Select statement - I believe it is the source of your problem.
Sub Hide_2wk_Macro3()

Range( _
"C:C,D:D,F:F,G:G,I:I,J:J,L:L,M:M,O:O,P:p,R:R,S:S,U:U,V:V,Z:Z,AA:AA,AD:AD
& ,AC:AC,AF:AF,AG:AG,AI:AI,AJ:AJ,AL:AL,AM:AM,AO:AO,AP:AP,AR:AR,AS:AS" _
).EntireColumn.Hidden = True
Range("A5").Activate
End Sub
 
D

Dan E

Many thanks, Tom - that works wonderfully!

Dan
Tom Ogilvy said:
Remove the Select statement - I believe it is the source of your problem.
Sub Hide_2wk_Macro3()

Range( _

"C:C,D:D,F:F,G:G,I:I,J:J,L:L,M:M,O:O,P:p,R:R,S:S,U:U,V:V,Z:Z,AA:AA,AD:AD &
,AC:AC,AF:AF,AG:AG,AI:AI,AJ:AJ,AL:AL,AM:AM,AO:AO,AP:AP,AR:AR,AS:AS" _
).EntireColumn.Hidden = True
Range("A5").Activate
End Sub
 
D

Dan E

Thanks, Don. The titles need to be LARGE and span several columns, however.
Tom's solution below works well, if you need to do something similar.

Dan
Don Guillett said:
maybe

title title
col a col b
 

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