如何允许在VBA InputBox中输入多行输入?

时间:2019-05-06 12:05:47

标签: excel vba

我正在处理一个宏,该宏将允许我将SQL查询键入(或更可能将其粘贴)到InputBox中,然后单击“确定”,它针对查询返回查询结果。数据库。问题在于,默认情况下,VBA仅接受一行文本,并且SQL代码以更具结构性的多行格式编写,以提高可读性。当我尝试将SQL代码粘贴到InputBox时,除第一行以外的所有内容都将被截断。我的下一个想法是在显示InputBox并提示我输入查询之前,先读取剪贴板的内容并用空格替换所有换行符,但显然这对我输入而不是粘贴的查询无济于事。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

我不相信您可以在InputBox中执行此操作。 InputBox通常用于较小的输入,例如数字或单词。此外,在InputBox中键入时按下enter会提交它,因此,如果您可以添加多行,将会造成混乱。

您可以做的是创建一个新的UserForm,并添加一个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

相关问题