одна буква ДЛЯ ВСЕХ, НО другого цвета

#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: Если ответ решил вашу проблему, наше правило здесь — установить флажок «Код слева», чтобы сделать его принятым ответом