Working with a worksheet that is not the active worksheet

O

ordnance1

How can I make this code work on my worksheet named February, when it is not
the active worksheet?


Sub BlankWeeks()
'
' Macro2 Macro
'

'
If Range("C184").Value = "" Then
Rows("184:228").Hidden = True
End If

If Range("C184").Value <> "" Then
Rows("184:228").Hidden = False
End If

If Range("C229").Value = "" Then
Rows("229:273").Hidden = True
End If

If Range("C229").Value <> "" Then
Rows("229:273").Hidden = False
End If

End Sub
 
M

Mike H

Hi,

You have to qualify the ranges with a sheet name

Sub BlankWeeks()
Set sht = Sheets("February")
With sht
If .Range("C184").Value = "" Then
.Rows("184:228").Hidden = True
End If

If .Range("C229").Value <> "" Then
.Rows("229:273").Hidden = False
End If
End With
End Sub
--
Mike

When competing hypotheses are otherwise equal, adopt the hypothesis that
introduces the fewest assumptions while still sufficiently answering the
question.
 
R

Rick Rothstein

You have to tell the VB processor the name of your worksheet which you can
do using the Worksheets collection. There are two ways to do this. First, by
directly qualifying each range reference...

Sub BlankWeeks()
If Worksheets("February").Range("C184").Value = "" Then
Worksheets("February").Rows("184:228").Hidden = True
End If
If Worksheets("February").Range("C184").Value <> "" Then
Worksheets("February").Rows("184:228").Hidden = False
End If
If Worksheets("February").Range("C229").Value = "" Then
Worksheets("February").Rows("229:273").Hidden = True
End If
If Worksheets("February").Range("C229").Value <> "" Then
Worksheets("February").Rows("229:273").Hidden = False
End If
End Sub

or second (the much cleaner looking way), by using a With/End With block...

Sub BlankWeeks()
With Worksheets("February")
If .Range("C184").Value = "" Then
.Rows("184:228").Hidden = True
End If
If .Range("C184").Value <> "" Then
.Rows("184:228").Hidden = False
End If
If .Range("C229").Value = "" Then
.Rows("229:273").Hidden = True
End If
If .Range("C229").Value <> "" Then
.Rows("229:273").Hidden = False
End If
End With
End Sub

Notice the "dots" in front of each range reference (Range, rows, etc.)...
those are required in order that the range references back to the object of
the With statement.
 

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