Macro - color tab

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I have the following macro:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Application.Intersect(Target, Range("U246")) Is Nothing Then
If Target.Value = IsError(xlErrDiv0) Then
Sh.Tab.ColorIndex = xlColorIndexNone
Else
If Target.Value < 120 Then
Sh.Tab.Color = RGB(255, 0, 0)
Else
If Target.Value >= 120 Then
Sh.Tab.ColorIndex = xlColorIndexNone
End If
End If
End If
End If
End Sub

It is suppose to change the tab color to red when cell U246 is below 120.
Instead it changes color when a value below 120 is entered into any cell. I
have this code in a workbook module, so it works on all worksheets in the
workbook. There is a formula in cell U246. When the value of this formula
is <120, the tab should turn red.
How do I get it to look at only cell U246 and not all cells to decide when
to change color?
Thanks in advance for any help,
rob
 
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Application.Intersect(Target, Range("U246")) Is Nothing Then
If Target.Value = IsError(xlErrDiv0) Then
Sh.Tab.ColorIndex = xlColorIndexNone
ElseIf Target.Value < 120 Then
Sh.Tab.Color = RGB(255, 0, 0)
ElseIf Target.Value >= 120 Then
Sh.Tab.ColorIndex = xlColorIndexNone
End If
End If
End Sub


--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
try
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Target.Address <> "$U$246" Then Exit Sub
if target>=120 then
Sh.Tab.ColorIndex = 46
Else
Sh.Tab.ColorIndex = xlNone
End If
End Sub
 
Bob,
Thanks for the help. It works great as long as there is no formula in cell
U246. I have this formula in the cell: (R246/T246)/24. If the result is
<120, the tab should turn red. Is there a way for xl to look only at the
result in the cell and not the formula?

Thanks again,
rob
 
It works for me with that formula in the cell. It doesn't matter as it
checks the cell value.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
Am I missing something? I copied what you sent and I get the same result as
before. The only way it works is if I clear the formula and put in the
result. I even tested it in a new, blank workbook and got the same result.
I have even inserted this statement, Sh.Range("U246").Formula =
"=(R246/T246)/24", before this statement, If Not
Application.Intersect(Target, Range("U246")) Is Nothing Then. It works just
like I want it to, but whenever data is entered I get a run time 13 error -
type mismatch. Any suggestions on the run time error or eliminating the
formula portion?
Thanks for all your help,
rob
 
Rob,

Can you post me your workbook and I will take a look?

Post to

bob dot ngs at googlemail dot com

do the obvious with dot and at.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
This will work but ONLY if a change is made to the active sheet. Is that
what you want??

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'If Target.Address <> "$E$2" Then Exit Sub
If Sh.Range("e2") >= 120 Then
'If Target >= 120 Then
Sh.Tab.ColorIndex = 46
Else
Sh.Tab.ColorIndex = xlNone
End If
End Sub
 

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

Back
Top