#excel #vba
#excel #vba
Вопрос:
Я хочу, чтобы каждое значение ячейки начиналось с буквы A, B, C … чтобы оно было окрашено в определенный цвет.
Я могу это сделать, только если в нем указано, что работает только A. Что нужно исправить?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Left(Target.Value, 1) = "A" Then Target.Interior.Color = 34
If Left(Target.Value, 1) = "B" Then Target.Interior.Color = 36
If Left(Target.Value, 1) = "C" Then Target.Interior.Color = 39
If Left(Target.Value, 1) = "D" Then Target.Interior.Color = 41
If Left(Target.Value, 1) = "E" Then Target.Interior.Color = 38
If Left(Target.Value, 1) = "F" Then Target.Interior.Color = 37
If Left(Target.Value, 1) = "G" Then Target.Interior.Color = 35
End Sub
Комментарии:
1.
If left(Target.Value,1) = "A" Then ...
2. Вы знаете, что для этого вам не нужен VBA? Вы можете добиться этого с помощью условного форматирования? 🙂
Ответ №1:
ваш макрос работает, но цвета одинаковы. используйте свойство interior.colorindex
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Left(Target.Value, 1) = "A" Then Target.Interior.ColorIndex = 1
If Left(Target.Value, 1) = "B" Then Target.Interior.ColorIndex = 2
If Left(Target.Value, 1) = "C" Then Target.Interior.ColorIndex = 3
If Left(Target.Value, 1) = "D" Then Target.Interior.ColorIndex = 4
If Left(Target.Value, 1) = "E" Then Target.Interior.ColorIndex = 5
If Left(Target.Value, 1) = "F" Then Target.Interior.ColorIndex = 6
If Left(Target.Value, 1) = "G" Then Target.Interior.ColorIndex = 7
End Sub
у вас есть палитра
Комментарии:
1. @sari: Если ответ решил вашу проблему, наше правило здесь — установить флажок «Код слева», чтобы сделать его принятым ответом …