Страницы: 1
RSS
Изменение цвета формы на основе значения ячейки, код VBA по изменению цвета формы на основе значения ячейки
 
Добрый день!
Подскажите, пожалуйста, каким образом необходимо скорректировать код 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 - 12.05.2018 17:58:24
 
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
 
Цитата
Юрий М написал:
причём тут форма, если требуется менять цвет фигур
Привет, Юрий
Просто ТС воспользовался переводчиком, типа translate.google.com. А там перевод форма :)
 
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
 
Первая фигура не очень напоминает овал )
Страницы: 1
Наверх