Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hello
I have to format cells (I4:J37) if cells (I43:J76) a 100%-91% (green) 90%-76% (blue) 75%-50% (yellow) <50% (red) How do I write that in VBA? (I am new to VBA so any help would be appreciated) Many thanks Tracey |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Hi Tracey,
I asume your users will enter a value in the range("I43:J76"). In that case you case use the Worksheet_change(Byval Target as Range function like so: Private Sub Worksheet_Change(ByVal Target As Range) ' Check if only 1 cells value is changed If Target.Cells.Count 1 Then Exit Sub ' Check if changed cell has a value If IsEmpty(Target) Then Exit Sub ' Check if changed cell has numeric value If Not IsNumeric(Target.Value) Then ' Change font color Target.Font.Color = vbRed Exit Sub Else Target.Font.Color = vbBlack End If ' Check if changed cell is specific given range If Intersect(Target, Range("I43:J76")) Is Nothing Then Exit Sub Select Case Target.Value Case 0.91 To 1 Target.Offset(-37, 0).Interior.Color = vbGreen Case 0.76 To 0.91 Target.Offset(-37, 0).Interior.Color = vbBlue Case 0.5 To 0.76 Target.Offset(-37, 0).Interior.Color = vbYellow Case Else Target.Offset(-37, 0).Interior.Color = vbRed End Select End Sub HTH, Wouter |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Open the VBE, insert a new module, and paste in the code. Then select and run
it. Note that this is not dynamic like true "conditional formatting"; e.g. if the cell values change, the colors will not change until the macro is run again. HTH, Keith Sub UpdateColors() For i = 1 To 34 RowToFormat = i + 3 RowOfData = i + 42 'Sheet1.Range("A1").Interior.Color DataValue = Sheets("Sheet1").Range("I" & RowOfData).Value Select Case DataValue Case Is < 0.5 Sheets("Sheet1").Range("I" & RowToFormat).Interior.Color = vbRed Case Is <= 0.75 Sheets("Sheet1").Range("I" & RowToFormat).Interior.Color = vbYellow Case Is <= 0.9 Sheets("Sheet1").Range("I" & RowToFormat).Interior.Color = vbBlue Case Is <= 1 Sheets("Sheet1").Range("I" & RowToFormat).Interior.Color = vbGreen Case Else Sheets("Sheet1").Range("I" & RowToFormat).Interior.Color = xlAutomatic End Select Next End Sub "RedDevil" wrote: Hello I have to format cells (I4:J37) if cells (I43:J76) a 100%-91% (green) 90%-76% (blue) 75%-50% (yellow) <50% (red) How do I write that in VBA? (I am new to VBA so any help would be appreciated) Many thanks Tracey |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Conditional Formating | Excel Discussion (Misc queries) | |||
conditional formating | Excel Discussion (Misc queries) | |||
Conditional Formating | Excel Discussion (Misc queries) | |||
Install dates formating using conditional formating? | Excel Discussion (Misc queries) | |||
Conditional Formating | Excel Worksheet Functions |