Home |
Search |
Today's Posts |
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
In a particular column in my spreadsheet I have set up conditional formats to
change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#2
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You can have as many as you want with this. It;s worksheet code so
right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#3
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
You can use arbitrary conditions in VBA:
Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Range("B9"), Target) Is Nothing Then Exit Sub End If v = Target.Value clrs = Array("red", "blue", "green", "yellow") cds = Array(3, 5, 10, 6) For i = 0 To 3 If v = clrs(i) Then Application.EnableEvents = False Target.Interior.ColorIndex = cds(i) Application.EnableEvents = True End If Next End Sub This worksheet code looks for changes in cell B9. If the contents become "red", "blue", "green", or "yellow" then the background color changes. -- Gary''s Student - gsnu200724 "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#4
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Thankyou Mike
It works like a dream "Mike H" wrote: You can have as many as you want with this. It;s worksheet code so right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#5
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() Hi Mike I'm having a simular problem but I need an entire Row to change color to change as a result of the value of one cell is there way to do this using this VBA? *** Sent via Developersdex http://www.developersdex.com *** |
#6
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
One way:
In Mike's code, instead of Target.Interior.ColorIndex = x use Target.EntireRow.Interior.ColorIndex = x In article , Chris Pederson wrote: Hi Mike I'm having a simular problem but I need an entire Row to change color to change as a result of the value of one cell is there way to do this using this VBA? |
#7
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
When I delete the value in a cell the color doesn't revert to white.
"Mike H" wrote: You can have as many as you want with this. It;s worksheet code so right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#8
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
being an absolute beginner at VBA, i'm floundering in ever deeper waters, ive
created a employee leave worksheet, which is along the lines that it requires more colours than allowed by excel, the code is a god send, but this is the only VBA code that is on the worksheet. How can i run this piece of code? as when itry to run it it asks for a macro which i have tried to look up and learn using the excel help. "Mike H" wrote: You can have as many as you want with this. It;s worksheet code so right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#10
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
This looks like it will work for me, need some things clarified, firstly I
want the specified row to change to the given back ground color when I update the value of the progress indicator from 1-16 (each type of application has a numerical value between 1 and 16 in my sheet) also I have specific colors for each level 1 through 16, how do I find the correct number to specify the color I want? Thank you for your help. (In addition since this is for work and the e-mail I specify for this is home would you kindly send me a note to when you do respond to this?) Thank you again. -- Judy Rose Cohen "JE McGimpsey" wrote: One way: In Mike's code, instead of Target.Interior.ColorIndex = x use Target.EntireRow.Interior.ColorIndex = x In article , Chris Pederson wrote: Hi Mike I'm having a simular problem but I need an entire Row to change color to change as a result of the value of one cell is there way to do this using this VBA? |
#11
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
Mike,
I just found this post, and it works great! It works if you type the value into the cell, but I need it to execute if data is pasted into the worksheet and it meets the criteria for each case. Is there something in the code that can be modified to make that happen rather than having to actually type the word in each cell? Thanks, Steve "Mike H" wrote: You can have as many as you want with this. It;s worksheet code so right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? |
#12
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
The code will work if you paste a single cell in that watchrange (A1:C100)?
If you're pasting multiple cells, then the code exits right away: If Target.Cells.Count 1 Then Exit Sub Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) Dim RngToInspect As Range Dim myIntersect As Range Dim myCell As Range Dim myColor As Long Set RngToInspect = Me.Range("A1:c100") 'change to suit Set myIntersect = Intersect(RngToInspect, Target) If myIntersect Is Nothing Then 'not in the range Exit Sub End If For Each myCell In myIntersect.Cells myColor = -9999 Select Case LCase(myCell.Value) Case Is = LCase("dog"): myColor = 5 Case Is = LCase("cat"): myColor = 10 Case Is = LCase("Other"): myColor = 6 Case Is = LCase("Rabbit"): myColor = 46 Case Is = LCase("Goat"): myColor = 45 End Select If myColor < 0 Then 'do nothing Else myCell.Interior.ColorIndex = myColor End If Next myCell End Sub stevedemo77 wrote: Mike, I just found this post, and it works great! It works if you type the value into the cell, but I need it to execute if data is pasted into the worksheet and it meets the criteria for each case. Is there something in the code that can be modified to make that happen rather than having to actually type the word in each cell? Thanks, Steve "Mike H" wrote: You can have as many as you want with this. It;s worksheet code so right-click the tab, view code and paste in. Private Sub Worksheet_Change(ByVal Target As Range) Dim WatchRange As Range Dim CellVal As String If Target.Cells.Count 1 Then Exit Sub If Target = "" Then Exit Sub CellVal = Target Set WatchRange = Range("A1:c100") 'change to suit If Not Intersect(Target, WatchRange) Is Nothing Then Select Case CellVal Case "Dog" Target.Interior.ColorIndex = 5 Case "Cat" Target.Interior.ColorIndex = 10 Case "Other" Target.Interior.ColorIndex = 6 Case "Rabbit" Target.Interior.ColorIndex = 46 Case "Goat" Target.Interior.ColorIndex = 45 End Select End If End Sub Mike "Art Caragh" wrote: In a particular column in my spreadsheet I have set up conditional formats to change the background colour and font colour if certain words are inserted. The conditional Formatting option on the tool bar gives me a maximum range of three. how can i extend this using VBA? -- Dave Peterson |
Reply |
Thread Tools | Search this Thread |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
Excel Conditonal Formatting Limits | Excel Discussion (Misc queries) | |||
Extending Conditional Formatting Capabilities | Excel Programming | |||
Conditional formatting limits | Excel Discussion (Misc queries) | |||
increase limits for conditional formating for different dates | Excel Programming | |||
Wrap text limits in Excel 2003 cell formatting | Excel Discussion (Misc queries) |