Can I do this in Excel, or another program?
April 6, 2021 6:28 PM Subscribe
I'm trying to create some formatting in Excel so that a cell can be highlighted with a click to show what each person is working on. Kind of like an extended office In/Out board. I've got some VBA set up, but it's only allowing me one highlighted cell in the whole range and I want each row (person) to have its own highlighted cell.
I copied and modified this from another board and don't know how to write VBA from scratch, so I've made a mistake somewhere. How do I modify this to have one highlighted cell per row/range?
=============
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static Cl As Range
If Not Intersect(Target, Range("B2:H2")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
If Not Intersect(Target, Range("B3:H3")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
If Not Intersect(Target, Range("B4:H4")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
End Sub
=======================
I copied and modified this from another board and don't know how to write VBA from scratch, so I've made a mistake somewhere. How do I modify this to have one highlighted cell per row/range?
=============
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static Cl As Range
If Not Intersect(Target, Range("B2:H2")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
If Not Intersect(Target, Range("B3:H3")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
If Not Intersect(Target, Range("B4:H4")) Is Nothing Then
With Target.Interior
.ColorIndex = IIf(.ColorIndex = 8, 0, 8)
End With
If Not Cl Is Nothing Then Cl.Interior.ColorIndex = 0
Set Cl = Target
End If
End Sub
=======================
Best answer: I think this does what you're looking for:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RangePerson1 As Range
Set RangePerson1 = Range("B2:H2")
Dim RangePerson2 As Range
Set RangePerson2 = Range("B3:H3")
Dim RangePerson3 As Range
Set RangePerson3 = Range("B4:H4")
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, RangePerson1) Is Nothing Then
RangePerson1.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
If Not Intersect(Target, RangePerson2) Is Nothing Then
RangePerson2.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
If Not Intersect(Target, RangePerson3) Is Nothing Then
RangePerson3.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
End Sub
You'll need to add additional ranges and If statements if you have more than 3 folks and modify the ranges as needed for additional columns / tasks. There may be a way of automating that based on what's in the sheet but I didn't delve that deeply.
posted by macfly at 7:31 PM on April 6, 2021
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim RangePerson1 As Range
Set RangePerson1 = Range("B2:H2")
Dim RangePerson2 As Range
Set RangePerson2 = Range("B3:H3")
Dim RangePerson3 As Range
Set RangePerson3 = Range("B4:H4")
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, RangePerson1) Is Nothing Then
RangePerson1.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
If Not Intersect(Target, RangePerson2) Is Nothing Then
RangePerson2.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
If Not Intersect(Target, RangePerson3) Is Nothing Then
RangePerson3.Interior.ColorIndex = 0
Target.Interior.ColorIndex = 3
End If
End Sub
You'll need to add additional ranges and If statements if you have more than 3 folks and modify the ranges as needed for additional columns / tasks. There may be a way of automating that based on what's in the sheet but I didn't delve that deeply.
posted by macfly at 7:31 PM on April 6, 2021
Response by poster: Thank you, macfly, that is it. Brilliant. And thank you ashbury for the suggestion.
posted by mefireader at 8:25 PM on April 6, 2021
posted by mefireader at 8:25 PM on April 6, 2021
« Older FIV+ cat with voluminous excretions - help! | What did you put on your wedding registry? Newer »
This thread is closed to new comments.
posted by ashbury at 7:24 PM on April 6, 2021