Добрый день! Подскажите, пожалуйста, каким образом необходимо скорректировать код VBA, чтобы менялся цвет у обеих фигур на листе Excel. При данном коде происходит смена цвета только у одной фигуры, пытался копировать его, менять ячейку A1 на A2 и название фигуры Oval1 на Oval2 и вставлять ниже, тогда появляется ошибка Ambiguous name detected: Worksheet_Change. В VBA новичок, поэтому не могу разобраться
Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A1")) Is Nothing Then Exit Sub
If IsNumeric(Target.Value) Then
If Target.Value = 1 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbRed
ElseIf Target.Value = 2 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbYellow
ElseIf Target.Value = 3 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbGreen
Else
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbBlack
End If
End If
End Sub
kordads, причём тут форма, если требуется менять цвет фигур на листе? И код оформляйте соответствующим тегом - ищите такую кнопку и исправьте своё сообщение.
If IsNumeric(Target.Value) Then
rg = Choose(Target.Value, vbRed, vbYellow, vbGreen, vbBlack)
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = rg
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = rg
End If
V, попробовал скорректировать на Ваш код, ничего не получилось( Необходимо, чтобы значение в ячейке A1 влияло на цвет фигуры Oval 1, а значение в ячейке A2 на цвет фигуры Oval2
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Target.Value = 1 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbRed
ElseIf Target.Value = 2 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbYellow
ElseIf Target.Value = 3 Then
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbGreen
Else
ActiveSheet.Shapes("Oval 1").Fill.ForeColor.RGB = vbBlack
End If
End If
If Not Intersect(Target, Range("A2")) Is Nothing Then
If Target.Value = 1 Then
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = vbRed
ElseIf Target.Value = 2 Then
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = vbYellow
ElseIf Target.Value = 3 Then
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = vbGreen
Else
ActiveSheet.Shapes("Oval 2").Fill.ForeColor.RGB = vbBlack
End If
End If
End Sub