excel - 如何允许在 VBA InputBox 中输入多行输入?
问题描述
我正在研究一个宏,它允许我将 SQL 查询键入(或更可能是粘贴)到一个InputBox
中,然后单击“确定”,它会返回针对数据库的查询结果。问题是,默认情况下,VBA 只接受一行文本,并且 SQL 代码以更结构化的多行格式编写以提高可读性。当我尝试将 SQL 代码粘贴到 中时InputBox
,除第一行之外的所有文本都被截断。我的下一个想法是在显示 InputBox 并提示我输入查询之前读取剪贴板的内容并用空格替换任何换行符,但显然这对我输入而不是粘贴的查询没有帮助。任何帮助将不胜感激!
解决方案
我不相信你可以在 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
推荐阅读
- javascript - || js 中的表达式预期错误 多变的
- java - Android Fragment参数包:当键存在时getString返回null
- java - 如何从 Json 数组中删除属性
- r - 如何使用 R 中的管道运算符找到数据框一列的平均值?
- java - java.util.logging 不适用格式化程序
- react-native - Which version of Hermes is working with RN 0.63.4
- javascript - 由于某些父元素,如何检查元素是否透明(不透明度)?
- sql - SQL 查询中两个字段的 GROUP 的 COUNT -- Postgres
- adsense - Google adsense:有 slotrenderenderevent 吗?
- java - Android GridView 不显示图像