PC Review


Reply
Thread Tools Rate Thread

Conditional Formatting in 2007

 
 
peedub
Guest
Posts: n/a
 
      26th Oct 2009
I have a pivot table that is linked to data in a project/resource
management system. I want to apply conditional formatting so that I
can (1) highlight project entries based on their current state, (2)
format the total rows for each resource so I can highlight those that
are over committed (total hours > 40) and those that are under-
utilized (total hours < 35). So, I'm good through creating the
conditional formatting rules for the first item. I'm getting hung
creating conditional formatting for the second scenario. My thinking
is that since each resource's total row is a separate range, I have to
create a separate rule for each. What's odd is that Excel creates the
rule correctly, but then applies the formatting instructions to a
completely different rule. No matter what (i) value I use, the
formatting instructions always get applied to one of the first two
rules I created. What am I doing wrong? Here's my code:

Sub FormatBookedHours()

Dim sBegRange As String
Dim sCFCell As String
Dim sEndRange As String
Dim sStageStart As String
Dim rTable As Range
Dim sTargetCell As String
Dim i As Integer
Dim iA As Integer
Dim iB As Integer

'Make sure the focus is the Report tab
Sheets("Report").Select
Range("A1").Select

'Step 1 - Format the opportunity and delivering rows
'First find the Project Stage column
Cells.Find(What:="Project Stage", After:=Range("A1"),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Select
sStageStart = ActiveCell.Address
ActiveCell.Offset(1, -1).Select
sBegRange = ActiveCell.Address

'Find the Grand Total column
Cells.Find(What:="Grand Total", After:=Range("B1"),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Select
ActiveCell.Offset(2, 0).Select
Cells.Find(What:="", After:=ActiveCell, LookIn:=xlFormulas, LookAt
_
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Select
ActiveCell.Offset(-2, 0).Select
sEndRange = ActiveCell.Address

'Create the conditional formatting rule for Opportunity
Range(sStageStart).Select
ActiveCell.Offset(1, 0).Select
sStageStart = ActiveCell.Address
sStageStart = Replace(sStageStart, "$", "")
sStageStart = "$" & sStageStart
With Range(sBegRange, sEndRange)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=" & sStageStart & "=""Opportunity"""
.FormatConditions(1).Interior.ColorIndex = 40
.FormatConditions(1).StopIfTrue = False
End With
'Create the conditional formatting rule for Delivery
With Range(sBegRange, sEndRange)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=" & sStageStart & "=""Delivery"""
.FormatConditions(2).Interior.ColorIndex = 43
.FormatConditions(2).StopIfTrue = False
End With

'Step 2 - Hide the Project Stage column
Range(sBegRange).Select
ActiveCell.Offset(0, 1).Select
ActiveCell.EntireColumn.Hidden = True

'Step 3 - Format Total hours rows - bold, set font color red for >
40, background yellow for < 35
Range("A1").Select
Cells.Find(What:="Resource", After:=Range("A1"),
LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Select

Cells.Find(What:=") Total", After:=Range("A1"),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext,
MatchCase:= _
False).Activate
ActiveCell.Select
sBegRange = ActiveCell.Address
iA = ActiveCell.Row
ActiveCell.Offset(2000, 0).Select
sEndRange = ActiveCell.Address
Range(sEndRange).End(xlUp).Select

'The first two conditional format rules are in place
'the next rule should be number 3, so set the
'index value for the next rule to 3 and then
'increment for each rule that is created
i = 3

Do
'Start at the beginning of the row
Range(sBegRange).Select
ActiveCell.Offset(0, 30).Select
sEndRange = ActiveCell.Address
'Find the last cell in the row
Range(sEndRange).End(xlToLeft).Select
ActiveCell.Offset(0, -1).Select
sEndRange = ActiveCell.Address
'Format the row
Range(sBegRange, sEndRange).Select
Selection.Font.FontStyle = "Bold"
'Set the sBegRange value to the first cell with a number
Range(sBegRange).Select
ActiveCell.Offset(0, 4).Activate
sBegRange = ActiveCell.Address
sCFCell = Replace(sBegRange, "$", "")
'Create the conditional format to make all hours over 40 red
With Range(sBegRange, sEndRange)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=" & sCFCell & ">40"
.FormatConditions(i).StopIfTrue = False
.FormatConditions(i).Font.ColorIndex = 3
End With
'Create the conditional format to make all hours under 35 blue
i = i + 1
With Range(sBegRange, sEndRange)
.FormatConditions.Add Type:=xlExpression, _
Formula1:="=" & sCFCell & "<35"
.FormatConditions(i).StopIfTrue = False
.FormatConditions(i).Font.ColorIndex = 5
End With
'Find the next starting point
Range(sBegRange).Select
ActiveCell.Offset(0, -4).Activate
sBegRange = ActiveCell.Address
Cells.Find(What:=") Total", After:=Range(sBegRange),
LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByColumns,
SearchDirection:=xlNext, MatchCase:= _
False).Activate
sBegRange = ActiveCell.Address
iB = iA
iA = ActiveCell.Row
i = i + 1
Loop Until iA < iB

Range("A1").Select

End Sub
 
Reply With Quote
 
 
 
 
peedub
Guest
Posts: n/a
 
      28th Oct 2009
Another interesting note about this:

At the point that I create the new rule and then edit it to set the
StopIfTrue value, that edit is applied to the correct rule. The very
next step, setting the font color, is applied to a different rule.
This is the section I'm talking about:

..FormatConditions(i).StopIfTrue = False 'Gets applied to the correct
rule
..FormatConditions(i).Font.ColorIndex = 3 'Gets applied to a different
rule
 
Reply With Quote
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: Conditional Formatting in 2007 Per Jessen Microsoft Excel Misc 0 16th May 2010 11:59 PM
2007 Conditional Formatting BigDDDD Microsoft Excel Worksheet Functions 1 2nd Sep 2008 02:46 AM
XL 2007 ...Conditional formatting .. NURTH Microsoft Excel Discussion 0 25th Aug 2008 08:01 AM
Conditional Formatting 2007 Steved Microsoft Excel Worksheet Functions 3 22nd Nov 2007 11:51 PM
Conditional Formatting No Longer Conditional in 2007 Beta =?Utf-8?B?Q2FjdHVhci1Oby1KdXRzdQ==?= Microsoft Excel Crashes 0 17th Nov 2006 10:01 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 06:32 AM.