изменение цвета ячейки в условиях значения дает неправильный цвет - PullRequest
0 голосов
/ 23 февраля 2019

Я * пытаюсь изменить цвет ячейки в зависимости от условий, в моей работе разные посты, где они выбирают шт. Для помещения в поддон

на каждой станции, где мы рассчитываем часы и шт. В час =шт: часы = решение

пример: рейтинги: 120 или более штук в час - зеленый цвет ячейки: от 119 до 80 шт. в час цвет ячейки оранжевый, меньше 80 шт. в час цвет ячейки красный

теперь для многих сообщений мой код работает, но для некоторых сообщений он дает мне неправильный цвет, почему я не нашел

Я не знаю, что с ним не так

Я публикуюКод для Vman Все рабочие станции имеют этот код, но просто изменяя значения условий, Vman составляет 120 шт. в час, как я уже говорил, прежде чем другие станции могут быть 2250, 100, 350, 300

и т. д. на большинстве станций выдаетсяправильный результат цвета

- это код для Vman

If ComboBox1.Text = "Vman" Then
   Range("ah10").Font.Color = vbBlack
   Range("ah10").Font.Bold = True
   Range("ah10").Font.Color = vbBlack
   'grijs-Gray
   If Range("ah10").Value = "" Then
      Range("ah10").Interior.Color = RGB(128, 128, 128)
      Range("ah10").Font.Color = vbBlack
      'rood-Red
   ElseIf Range("ah10").Value < "80" Then
      If Range("ah10").Value > "" Then
         Range("ah10").Interior.Color = vbRed
         Range("ah10").Font.Color = vbWhite
      End If
      'oranje-Orange
   ElseIf Range("ah10").Value >= "80" Then
      If Range("ah10").Value < "120" Then
         Range("ah10").Interior.Color = RGB(255, 153, 0)
      End If
      'groen-Green
   ElseIf Range("ah10").Value >= "120" Then
      Range("ah10").Interior.Color = RGB(146, 208, 80)
   End If
End If

If ComboBox1.Text = "Vman 3" Then
   Range("ah10").Font.Color = vbBlack
   Range("ah10").Font.Bold = True
   Range("ah10").Font.Color = vbBlack
   'grijs-Gray
   If Range("ah10").Value = "" Then
      Range("ah10").Interior.Color = RGB(128, 128, 128)
      Range("ah10").Font.Color = vbBlack
      'rood-Red
   ElseIf Range("ah10").Value < "80" Then
      If Range("ah10").Value > "" Then
         Range("ah10").Interior.Color = vbRed
         Range("ah10").Font.Color = vbWhite
      End If
      'oranje-Orange
   ElseIf Range("ah10").Value >= "80" Then
      If Range("ah10").Value < "120" Then
         Range("ah10").Interior.Color = RGB(255, 153, 0)
      End If
      'groen-Green
   ElseIf Range("ah10").Value >= "120" Then
      Range("ah10").Interior.Color = RGB(146, 208, 80)
   End If
End If

Я не нахожу решение для кода, на котором работает большинство станций, и дает мне хороший цвет, нонекоторые нет.

1 Ответ

0 голосов
/ 23 февраля 2019

Есть ли причина иметь код дважды?

Кроме того, причина, по которой это не работает, по-видимому, в том, что ваше значение находится внутри "кавычек".

Почему я использую .value2 вместо .valueсм. этот пост:
В чем разница между .text, .value и .value2?

Я бы также предложил обратиться к диапазону с переменной.Таким образом, вам нужно изменить его только один раз, вместо 10 разных мест в коде.

Попробуйте это

Dim pieces As Range
Set pieces = Range("AH10") 
If ComboBox1.Text = "Vman" Or ComboBox1.Text = "Vman 3" Or ComboBox1.Text = "Vman 4" Then
    pieces.Font.Color = vbBlack
    pieces.Font.Bold = True
    If pieces.Value2 = "" Then                              'grijs-Gray
        pieces.Interior.Color = RGB(128, 128, 128)
    ElseIf pieces.Value2 < 80 Then                          'rood-Red
        pieces.Interior.Color = vbRed
        pieces.Font.Color = vbWhite
    ElseIf pieces.Value2 > 79 And pieces.Value2 < 120 Then  'oranje-Orange
        pieces.Interior.Color = RGB(255, 153, 0)
    ElseIf pieces.Value2 > 119 Then                         'groen-Green
        pieces.Interior.Color = RGB(146, 208, 80)
    End If
End If

При таком повторении вы можете использовать With ... End With вместо или вместе с переменной.

If ComboBox1.Text = "Vman" Or ComboBox1.Text = "Vman 3" Or ComboBox1.Text = "Vman 4" Then
    With Range("AH10")
        .Font.Color = vbBlack
        .Font.Bold = True
        If .Value2 = "" Then                               'grijs-Gray
            .Interior.Color = RGB(128, 128, 128)
        ElseIf .Value2 < 80 Then                           'rood-Red
            .Interior.Color = vbRed
            .Font.Color = vbWhite
        ElseIf .Value2 > 79 And pieces.Value2 < 120 Then   'oranje-Orange
            .Interior.Color = RGB(255, 153, 0)
        ElseIf .Value2 > 119 Then                          'groen-Green
            .Interior.Color = RGB(146, 208, 80)
        End If
    End With
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...