我有可以工作的VBA代码,但似乎不是最佳选择。单击N列中的单元格时,代码应更改H和I列中相关单元格中文本的颜色。
例如,当单击单元格N5时,单元格H5和I5中的文本应变为白色。取消单击后,它们将恢复为正常颜色。
该代码似乎不是最佳的,因为I列中的更改落后于H列中的更改。
我想同时改变两者的方法。
(如果可以使单元格改变颜色并立即变为粗体,则奖励点,与颜色一样,一旦取消选中该单元格,粗体就会消失)。
<VirtualHost example.com:80>
# ...
SetEnv APP_ENV prod
SetEnv APP_DEBUG 0
SetEnv APP_SECRET d815b8d0c26835bb7ba2a920ef1cbb0b
# ...
</VirtualHost>
请注意,这是我第一次编写VBA,因此是业余爱好者。
答案 0 :(得分:1)
您无需分别解决每一列...
编辑:添加了粗体和多个单元格
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim r As Range, c As Range
Set r = Intersect(Me.Range("N:N"), Target)
'? what to do if user selects multiple cells ?
'E.g. - exit if user has >100 cells selected (possibly whole column)
If r Is Nothing Or Target.Cells.CountLarge > 100 Then Exit Sub
Application.ScreenUpdating = False
HighlightIt Application.Intersect(Me.Range("H:I"), Me.UsedRange), False
For Each c In r.Cells
HighlightIt Me.Cells(c.Row, "H").Resize(1, 2)
Next c
Application.ScreenUpdating = False
End Sub
'utility sub for highlighting/unhighlighting
Sub HighlightIt(rng As Range, Optional hilite As Boolean = True)
With rng
.Font.Color = IIf(hilite, vbWhite, vbBlack)
.Font.Bold = hilite
End With
End Sub
总是值得考虑的是,如果用户选择多个单元格(甚至整个列),将会发生什么。鲁棒地处理此问题有时会是一个挑战,这取决于您执行此操作时想要发生什么。