vba inputBox: альтернативные решения для «отмена» и «ОК» с пустым текстовым полем - PullRequest
0 голосов
/ 30 января 2020

По некоторым причинам, решение этих двух вопросов ( Q1 , Q2 ) о том, как провести различие между «отменить» и «хорошо с пустой строкой» для поля ввода не всегда работает в пределах указанного c моего кода. До сих пор я не смог воспроизвести проблему, поэтому я искал другое решение.

В моем сценарии всплывающее окно со значением по умолчанию, полученным из другого источника. Пока мне нужно было только изменить это значение через поле ввода, чтобы простая проверка для if len(inputboxString) = 0 then, чтобы определить, была ли нажата cancel, работала хорошо. Теперь у меня есть случай, когда мне нужно «очистить» существующее значение по умолчанию. Я пытаюсь избежать использования StrPtr по причине, описанной выше.

Вот код, который работал до сих пор (до тех пор, пока мне не нужно использовать поле ввода для удаления значения, поскольку 'strInputBox = ""' зарезервировано для события cancel, и я хочу избежать используя 'strPtr').

Dim strSomeStringFromSomewhere as String
strSomeStringFromSomewhere  = someSubThatGetsTheStringValueFromSomeWhere

Dim strInputBox As String
strInputBox = InputBox(Prompt:="Edit/Delete Value", Title:="Title", Default:=strSomeStringFromSomewhere)

If strInputBox = "" then
    'do nothing cause cancel was pressed
    else
    someSubThatWritesTheChangedStringBackToItsOrigin strInputBox 
    End If

Используемым значением обычно является некоторая строка alphanumeri c, например, d939d8ej3.

Любые советы / идеи для другого дружественного подхода будут приветствоваться. , (пользователь означает человека, использующего поле ввода, а не человека, который реализует / поддерживает код).

1 Ответ

0 голосов
/ 30 января 2020

Я придумал хорошую работу, которая должна работать и во многих других случаях. В моем случае один или несколько пробелов не являются допустимыми записями. И поскольку мне все равно приходится избавляться от пре- и преуспевающих пробелов, я просто использую trim(strInputBox), что «очистит» мою ценность.

Таким образом, пользователь просто должен ввести пробел в поле ввода, что достаточно для прототипов.

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