是否可以在VBA中创建一个“输入框”,可以选择多行作为输入进行文本选择?

时间:2017-04-11 11:59:23

标签: vba ms-word word-vba inputbox

我正在尝试创建一个宏,该宏将过滤掉某些选定文本(小于一页长)的相关信息。然后,此信息将用于填写MS-Word模板。

我一直在通过.txt文件打开所选文本,但我觉得如果可以复制&将所选文本粘贴到某种形式的输入框中。

我尝试了以下内容:

Dim text As String
text = InputBox("Enter selected text here:")

但是这只接受一个字符串(单行文本)。

谢谢,Donfernanado

1 个答案:

答案 0 :(得分:1)

正如Rich Holton指出的那样,您可以创建自己的InputBox来支持所需的功能:

首先创建一个看起来像InputBox的UserForm。我叫CustomInputBox

将TextBox的MultiLine属性设置为True。

示例:

MessageBox Example

然后为按钮添加一些逻辑,并为显示输入框的函数添加一些参数,如提示和标题:

Option Explicit

Private inputValue As String
Private Cancel As Boolean

Private Sub btnCancel_Click()
    Cancel = True
    Me.Hide
End Sub

Private Sub btnOK_Click()
    If Me.txtInput.Value <> "" Then
        inputValue = Me.txtInput.Value
    End If
    Me.Hide
End Sub

'This is the Function you are going to use to open your InputBox
Public Function Display(Prompt As String, Optional Title As String = "", Optional Default As String = "") As String
Cancel = False

Me.lblPrompt.Caption = Prompt

If Title <> "" Then
    Me.Caption = Title
Else
    Me.Caption = "Microsoft Excel"
End If

If Default <> "" Then
    Me.txtInput.Value = Default
Else
    Me.txtInput.Value = ""
End If

Me.txtInput.SetFocus
Me.Show vbModal

If Not Cancel Then
    Display = inputValue
Else
    Display = ""
End If
End Function

现在您可以像这样使用InputBox:

Dim text As String
text = CustomInputBox.Display("Enter selected text here:")