Вы не можете обрабатывать строки как булевы (что вы делаете). Строка может выводить результат true/false, но не так, как вы это делаете. Попробуйте с этим кодом:
Dim UserCol As String
Dim FirstRow As Integer
UserCol = Application.InputBox(Prompt:="In what Column do we search? (E.g. enter: A)", Type:=2)
If Len(Trim(UserCol)) < 1 Then Exit Sub
' On cancel works OK. But if you type "A" (no quotes) u get a run-time ERROR 13!
FirstRow = Application.InputBox(Prompt:="What is your data-table's first row? (E.g. enter: 2)", Type:=1)
If FirstRow < 1 Then Exit Sub
Первое условие ложно (и Sub
происходит выход), если длина («обрезанного») входной строки ниже, чем 1. Второе условие, если входной является строка не число.
ПРИМЕЧАНИЕ. Имейте в виду, что причина, по которой второе условие не вызывает ошибку, состоит в том, что целые числа «поддерживают логическое значение»; хотя здесь нет никакого реального смысла: если вы удалите это условие, ничего не изменится. Мое условие проверяет, что вы действительно хотите (строка больше или равна 1). Также помните, что InputBox
поддерживает целые числа, но это обычно не так (с большинством элементов управления этого типа вам нужно будет получить входы как строку и преобразовать их в целое, прямо или неявно).
ОБНОВЛЕНИЕ -
куды для учета кликов Отменить кнопки:
Dim UserCol As String
Dim FirstRow As Integer
UserCol = Application.InputBox(Prompt:="In what Column do we search? (E.g. enter: A)", Type:=2)
If (LCase(UserCol) <> "false") Then
If Len(Trim(UserCol)) < 1 Then Exit Sub
' On cancel works OK. But if you type "A" (no quotes) u get a run-time ERROR 13!
FirstRow = Application.InputBox(Prompt:="What is your data-table's first row? (E.g. enter: 2)", Type:=1)
If (FirstRow < 1) Then Exit Sub
End If
Если первый InputBox отменяется «ложный» возвращаются (в виде строки), и если второй из них отменил 0 (и, таким образом, исходное условие может справиться с этим).
Спасибо за ответ, теперь он принимает значение, хотя он не выходит из подкаталога, если я нажму ESC или нажмите кнопку «Отмена». Ваше второе условие Выходит из Sub. –
@AntonFrolov Это не было частью вашего ответа (и, фактически, я не уверен, почему вы отменили этот ответ как правильный, насколько он отвечает на то, что вы просили). Вы не можете сделать многопрофильный вопрос, но вы должны опубликовать новый вопрос для каждой проблемы. В любом случае, это кажется довольно простым и будет смотреть на него, но вы не должны этого делать (неназначенный правильный ответ, чтобы спросить новую вещь). – varocarbas
Поскольку я новичок здесь, я не был уверен, как связаться с вами по этой теме. Я прошу прощения за это. ==> Мне нужно выйти из подкаталога, когда пользователь нажимает кнопку отмены в форме InputBox. В добавлении, мне нужно InputBox принять входное значение. <== Мой код сделал 'Exit Sub', но не принял значение. Вы объяснили, почему. Спасибо =) Ваш код принимает значение, но не имеет выхода Sub =/ –