输入框以选择范围或输入文本

时间:2016-08-10 17:59:56

标签: excel-vba vba excel

我有一个Excel VBA脚本,提示用户输入一系列包含关键字的单元格以供日后使用:

Dim keywordRange As Range
Set keywordRange = Application.InputBox("Select a range with your keywords.", "KEYWORDS", Type:=8)

此代码工作正常。将出现一个带有空白文本字段的弹出框。单击一个单元格,文本字段将填充对该范围的引用,例如," $ A $ 1"。

我希望选项可以在该空白文本字段中键入文本,而不是选择范围。例如,输入框将返回" $ A $ 1"如果点击了单元格或者是"我的关键词"如果用户键入它。

目前,输入有效范围引用以外的文本会生成此错误:

  

您键入的引用无效,或者您没有提供需要引用的引用。要使用鼠标输入参考,请在编辑框中单击,然后单击要参考的工作表中的单元格,或者拖动要选择的范围。

我尝试更改了' keywordRange'变量类型为String。这产生了编译错误。

任何想法从哪里开始?谢谢!

2 个答案:

答案 0 :(得分:2)

我建议创建Userform并放置RefEdit控件,如下图所示

enter image description here

然后使用类似的东西

Private Sub CommandButton1_Click()
    Dim rng As Range

    On Error Resume Next
    Set rng = Range(RefEdit1.Value)
    On Error GoTo 0

    If Not rng Is Nothing Then
        MsgBox "You selected the range " & RefEdit1.Value
    Else
        MsgBox "You typed " & RefEdit1.Value
    End If
End Sub

现在您可以输入文字或选择一个范围,如下所示。

enter image description here

答案 1 :(得分:1)

将类型从8更改为10

来自Microsoft Docs:

  

下表列出了可以在Type参数中传递的值。可以是一个值或一个值的总和。例如,对于可以接受文本和数字的输入框,请将“类型”设置为1 + 2。