Проблема с максимальным значением для текстового поля пользовательской формы - PullRequest
1 голос
/ 25 июня 2019

Я создал максимальное значение для учебника в пользовательской форме, который извлекает таблицы из SQL. Эта пользовательская форма ссылается на SQL-запрос в отдельной части рабочей книги.

В пользовательской форме пользователь может указать в текстовом поле (txtrownum), сколько строк они хотят вернуть. Максимум, что они могут вернуть - 100 000.

Если это больше 100 000, у меня появляется MsgBox, говорящее, что максимальная сумма равна 100 000, а значение текстового поля автоматически заполняется до 100 000.

Этот код отлично работает и находится ниже.

 Private Sub txtrownum_Change()

    'Here needs to be code where you can erase after it autocorrects,
    'the problem is when you try to erase it pulls up message box again and 
    'won't let you change it

    If txtrownum.Value > 100000 Then
        MsgBox "Maximum Number of Rows is 100,000"
        txtrownum.Value = "100000"
    End If
End Sub

Однако после 100 000 автозаполнений, если пользователь хочет полностью стереть это значение и ввести номер строки менее 100 000, Msgbox снова появляется и повторно заполняется с 100 000. Если пользователь выделит 100 000, он может написать без проблем. Но если они выделяют «100 000» и нажимают клавишу Backspace, сообщение появляется снова. Любой совет?

1 Ответ

5 голосов
/ 25 июня 2019

Попробуйте сначала проверить, является ли значение текстового поля isNumeric.

Как указал @MathieuGuindon, лучше сначала проверить, является ли введенный пользователем номер числом, затем выполнить дополнительную проверку в этом.

Если это не так, вы можете выполнить дополнительные действия в разделе Else.

 Private Sub txtrownum_Change()
    'Here needs to be code where you can erase after it autocorrects,
    'the problem is when you try to erase it pulls up the message box again and
    'won't let you change it

    If IsNumeric(txtrownum.Value) Then

        'Now that we know it is a number, now we can do the check.
        If txtrownum.Value > 100000 Then
            MsgBox "Maximum Number of Rows is 100,000"
            txtrownum.Value = "100000"
        End If
    Else
        'do something if not a number
    End If
End Sub
...