我有一个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。这产生了编译错误。
任何想法从哪里开始?谢谢!
答案 0 :(得分:2)
我建议创建Userform
并放置RefEdit
控件,如下图所示
然后使用类似的东西
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
现在您可以输入文字或选择一个范围,如下所示。
答案 1 :(得分:1)
将类型从8更改为10
来自Microsoft Docs:
下表列出了可以在Type参数中传递的值。可以是一个值或一个值的总和。例如,对于可以接受文本和数字的输入框,请将“类型”设置为1 + 2。