Как игнорировать ввод пользователя? - PullRequest
0 голосов
/ 20 февраля 2019

Мой код должен проверять каждую ячейку столбца "C" на предмет ввода в TextBox2, а затем, если он найден, с помощью строки, найденной в настройке столбца "D", пересечь содержимое ячейки с "IN".

Все это происходит по желанию с одним исключением.Если я нажимаю командную кнопку «Проверить IN» без ввода в textbox2, она устанавливает первую следующую пустую ячейку в столбце «D» как «IN».

Private Sub CheckIn_Click()

Dim FoundRange As Range
Dim Status As Range
    Set FoundRange = Columns("C").Find(What:=TextBox2.Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)

    If Not FoundRange Is Nothing Then
    Set Status = FoundRange.Offset(ColumnOffset:=1)
       Status.Value = "IN"
       TextBox2 = ""
       ThisWorkbook.Save
    Else
        Status.Value = ""
        TextBox2 = ""
        TextBox1.SetFocus
        MsgBox "Not Found"
    End If

End Sub

То, что я пытался сделать, это использоватьтот же сценарий из строки 9 в строке 13, но с пустым значением, так что даже если что-то сделано, ячейка пуста.С другой стороны, после запуска кода без ввода TextBox2 я получил эту ошибку: «Переменная объекта или переменная блока не установлена» в строке 13.

Я не понимаю, что это за переменнаяне устанавливается.Все, что я пытаюсь сделать, это смягчить то, что происходит, если кнопка нажата без ввода.

Ответы [ 2 ]

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

Первый тест:

Private Sub CheckIn_Click()

    Dim FoundRange As Range
    Dim Status As Range

    If TextBox2.Text = "" Then
        MsgBox "Test Skipped"
    Else
        Set FoundRange = Columns("C").Find(What:=TextBox2.Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)

        If Not FoundRange Is Nothing Then
           Set Status = FoundRange.Offset(ColumnOffset:=1)
           Status.Value = "IN"
           TextBox2 = ""
           ThisWorkbook.Save
        Else
            Status.Value = ""
            TextBox2 = ""
            TextBox1.SetFocus
            MsgBox "Not Found"
        End If
    End If

End Sub
0 голосов
/ 20 февраля 2019

Сначала проверьте значение TextBox2, затем продолжите, если есть значение.

Private Sub CheckIn_Click()

    If TextBox2.Value <> "" Then 

        Dim FoundRange As Range
        Dim Status As Range
        Set FoundRange = Columns("C").Find(What:=TextBox2.Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)

        If Not FoundRange Is Nothing Then
            Set Status = FoundRange.Offset(ColumnOffset:=1)
            Status.Value = "IN"
            TextBox2.Value = ""
        Else
            MsgBox "Not Found"
        End If

    End If

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