Вот общая функция, которую вы можете передать ComboBox
на:
Function ValidateComboBox(c As ComboBox) As Boolean
If Len(c.Text) = 0 Then
c.BackColor = vbRed
Controls(c.Tag).ForeColor = vbRed ' Set associated label color, also
c.SetFocus
ValidateComboBox = False
Else
c.BackColor = vbWhite
Controls(c.Tag).ForeColor = vbBlack ' Set associated label color, also
ValidateComboBox = True
End If
End Function
Вы называете это, как это, например, когда форма была отправлена:
' [OK] clicked. Submit form...
Private Sub cmdOK_Click()
If Not ValidateComboBox(ComboBox1) Then Exit Sub
If Not ValidateComboBox(ComboBox2) Then Exit Sub
If Not ValidateComboBox(ComboBox3) Then Exit Sub
...
End Sub
Хитрость в том, что вы есть метка, соответствующая каждому комбинированному ящику, которое также необходимо обновить. Вы можете либо спроектировать функцию, чтобы принять управление как ComboBox
, так и элемент управления Label
и передать их каждый раз, либо воспользовавшись свойством Tag
поля со списком, как я уже говорил выше. Для каждого поля со списком просто введите имя соответствующего элемента управления Label
в его свойство Tag
, используя окно Properties
в дизайнере.
Например, если ComboBox1
имеет метку с именем Label1
, затем введите "Label1"
(без кавычек) в ComboBox1
«s Tag
собственности. В приведенной выше процедуре мы будем искать метку/элемент управления с этим именем и соответствующим образом настроить его цвет.
HI Bud, он работал как шарм, только что я не знаю, почему это не тогда, когда я пытаюсь использовать его в TextBox так: Функция ValidateTextBox (T Как TextBox) As Boolean 'If Len (T.Text) = 0 Тогда T.BackColor = vbRed Controls (T.Tag) .ForeColor = vbRed 'Set связанный цвет этикетки, также T.SetFocus ValidateTextBox = False Else T.BackColor = vbWhite Controls (T.Tag) .ForeColor = vbBlack 'Установить соответствующий цвет ярлыка, также ValidateTextBox = True End If – Hamdi
@Ha mdi - Он не работает с TextBox? Вы получаете сообщение об ошибке? Не стесняйтесь публиковать новый вопрос и добавлять свой код, и я могу взглянуть. – Bond
/* Функция ValidateTextBox (T Как TextBox) As Boolean Если Len (T.Text) = 0 Тогда T.BackColor = vbRed Controls (T.Tag) .ForeColor = vbRed 'Set ассоциируется метка цвета, также T .SetFocus ValidateTextBox = False Else T.BackColor = vbWhite Controls (T.Tag) .ForeColor = vbBlack 'Set связанный цвет этикетки, также ValidateTextBox = True End If End Function */ – Hamdi