Изменить событие, чтобы скрыть текстовое поле и метку - PullRequest
0 голосов
/ 12 марта 2020

У меня есть ListBox с MultiSelect и Change Event. Конечный пользователь выбирает параметр, и он динамически создает текстовое поле и метку рядом с ним. Событие изменения, связанное с условием, запускается один раз из-за логического флага Stati c. Проблема в том, когда пользователь снимает галочку с опции. У меня есть условие, которое проверяет, было ли событие уже запущено, а затем скрывает текстовое поле и метку. Ошибка:

«Переменная объекта или переменная блока не установлена»

при попытке установить видимое поле текстового поля и метку False.

Ниже приведен код.

Private Sub ListBox1_Change()

Static Case1 As Boolean 'interface Scheduling Change
Static Case2 As Boolean 'generation bottling
Static Case3 As Boolean 'Area Max Reserve

Dim txtB1 As Control
Dim txtB1_label As Control


If ListBox1.Selected(0) And Not Case1 Then  'Trigger Event when Option(0) Selected (ensures event triggers only once)
    Set txtB1 = Controls.Add("Forms.TextBox.1")
    Set txtB1_label = Controls.Add("Forms.Label.1")
    With txtB1_label
        .Caption = "MW (TTC)"
        .Left = 162
        .Top = 120
        .Width = 42
        .Visible = True

    End With
    With txtB1
        .Name = "demo"
        .Height = 15
        .Width = 48
        .Left = 204
        .Top = 120
    End With
    Case1 = True
End If

If Not ListBox1.Selected(0) And Case1 Then  'Resets Trigger if Option(0) is unSelected
    MsgBox "No Nice"
    txtB1_label.Visible = False
    txtB1.Visible = False

    Case1 = False
End If

End Sub

Есть ли проблема с логикой c?

Редактировать: По сути, я щелкаю первую опцию ListBox1.Selected (0), она запускает первый блок If ... Else и создает текстовое поле и метку. Затем для Case1 Flag устанавливается значение True. Тогда я откручиваю первый вариант. Второй блок If ... Else проверяет, что он не выбран, и что Case1 имеет значение True, что означает, что он был нажат ранее. Это работает, потому что код входит в блок, и я вижу MsgBox. На данный момент текстовое поле и метка все еще существуют. Я не понимаю, почему это не установлено. Я создал его в первом блоке if ... else.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...