Как я могу изменить цвет текстового поля на основе значения ячейки в цикле? - PullRequest
0 голосов
/ 29 мая 2019

В моей пользовательской форме у меня есть кнопка «Далее», которая перебирает рабочий лист. Если ячейка в столбце CL = "yes", то измените цвет textbox10 на желтый, в противном случае оставьте его белым. Проблема в том, что он изменится только на желтый, если у меня нет выражения «Else», и тогда он не превратится в белый.

Я попытался изменить Private Sub TextBox10_Change () на Private Sub TextBox10_Enter (), а затем также добавил ... Textbox10_Exit (), но результаты остались прежними.

Private Sub TextBox10_change()

Dim i As Integer

Dim Lastrow As Integer

Lastrow = Cells(rows.Count, 1).End(xlUp).Row

For i = 2 To Lastrow

If ActiveSheet.Range("CL" & i) = "yes" Then
    Me.TextBox10.BackColor = vbYellow
Else
    Me.TextBox10.BackColor = vbWhite
End If

Next i

End Sub

По сути, ничего не происходит, если я не удалю:

Else

  Me.Textbox10.BackColor = vbWhite

и даже тогда он желтеет, но никогда не становится белым.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Как написано, будет отображаться только изменение цвета для текстового поля на основе значения CL в последней строке. Вы хотите, чтобы он циклически проходил по одной строке за раз?

0 голосов
/ 29 мая 2019

Ваш код будет работать, но он будет сопоставлен с тем, что находится в последней строке (т. Е. Желтым, если последняя строка "да").

Если вы хотите, чтобы оно было желтым, если любое из значений было "да", и белым, если ни одно из них не было "да", тогда

Me.TextBox10.BackColor = vbWhite
For i = 2 To Lastrow
    If ActiveSheet.Range("CL" & i) = "yes" Then
        Me.TextBox10.BackColor = vbYellow    
    End If
Next i
...