Вы также должны всегда проверять тип переменной, чтобы быть логическим: VarType(varInput) = vbBoolean
при использовании Application.InputBox
.
Dim varInput As Variant
varInput = Application.InputBox("Text", "Title", Type:=2)
If VarType(varInput) = vbBoolean And varInput = False Then
Exit Sub
End If
Если вы проверяете только для False
…
If varInput = False Then
… тогда он также выйдет из sub, если вы введете 0
или Falsch
(в немецком Excel) или False
(в английском Excel).
Это происходит потому, что строка 0
или "Falsch"
(или "False"
) автоматически преобразуется в логическое значение по сравнению с False
.Но только кнопка Cancel возвращает истинное логическое значение.