VBA: поле ввода и кнопка отмены - PullRequest
2 голосов
/ 01 апреля 2019
varInput = Application.InputBox("Text", "Title", Type:=2)
If varInput = "False" Then
    Exit Sub
End If

Если нажата кнопка отмены, возвращаемое значение представляет собой строку с «False». Но на каком-нибудь компьютере с немецкой настройкой я получу "Falsch"!

Как это сделать?

Ответы [ 2 ]

2 голосов
/ 01 апреля 2019

Вы также должны всегда проверять тип переменной, чтобы быть логическим: 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 возвращает истинное логическое значение.

2 голосов
/ 01 апреля 2019

Удалить цитаты:

If varInput = False Then
...