首页 > 解决方案 > 如何允许在 VBA InputBox 中输入多行输入?

问题描述

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

标签: excelvba

解决方案


我不相信你可以在 InputBox 中做到这一点。InputBoxes 通常用于小型输入,例如数字或单词。此外,enter在 InputBox 中输入时点击会提交它,因此如果您可以添加多行,则会造成混乱。

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


推荐阅读