Как можно разрешить ввод нескольких строк ввода в VBA InputBox? - PullRequest
0 голосов
/ 06 мая 2019

Я работаю над макросом, который позволил бы мне напечатать (или, что более вероятно, вставить) запрос SQL в InputBox, и после нажатия «ОК» он возвращает результаты запроса к базе данных.Проблема в том, что по умолчанию VBA принимает только одну строку текста, а код SQL написан в более структурированном, многострочном формате для удобства чтения.Когда я пытаюсь вставить код SQL в InputBox, все тексты, кроме первой, обрезаются.Моя следующая идея - прочитать содержимое буфера обмена и заменить любые символы новой строки пробелом перед отображением InputBox и предложением ввести запрос, но, очевидно, это не поможет с запросами, которые я набираю, а не вставляю.Любая помощь будет принята с благодарностью!

1 Ответ

1 голос
/ 06 мая 2019

Я не верю, что вы можете сделать это в InputBox.Ящики ввода обычно предназначены для небольших вводов, таких как число или слово.Кроме того, нажатие enter при вводе в InputBox отправляет его, поэтому было бы странно, если бы вы могли добавить несколько строк.

Вместо этого вы можете создать новую пользовательскую форму и добавить TextBox с полем MultiLine, установленным на True.Затем просто добавьте кнопку «ОК», которая закрывает форму, и ваш макрос будет считан из TextBox.

В качестве другой альтернативы, вот функция, которую я использую, чтобы получить любой текст, который в данный момент находится в буфере обмена пользователя.Таким образом, вы можете просто скопировать ваш запрос перед запуском любого макроса, в котором вы хотите его использовать.

Function copyFromClipboard() As String
    Dim clipboard As MSForms.DataObject
    Set clipboard = New MSForms.DataObject
    clipboard.GetFromClipboard
    copyFromClipboard = clipboard.getText
End Function

Требуется ссылка на Microsoft Forms 2.0 Object Library

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