【问题标题】:Input Box to Select a Range or Enter Text用于选择范围或输入文本的输入框
【发布时间】:2016-08-11 03:00:49
【问题描述】:

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

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

此代码运行良好。将出现一个带有空白文本字段的弹出框。单击一个单元格,文本字段将填充对该范围的引用,例如“$A$1”。

我想要在该空白文本字段中键入文本而不是选择范围的选项。例如,如果单击单元格,输入框将返回“$A$1”的范围,如果用户键入,则返回“My Key Word”的值。

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

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

我尝试将“keywordRange”变量类型更改为字符串。这产生了一个编译错误。

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    我建议创建一个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
    

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

    【讨论】:

    • 这成功了!这是我的第一个用户表单,所以我不得不阅读他们的工作原理,但它确实完成了工作。谢谢!
    【解决方案2】:

    将类型从 8 更改为 10

    来自微软文档:

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

    【讨论】:

    • 这在 Application.InputBox 代码行生成了运行时错误“424”:需要对象。
    • keywordRange 更改为Variant,您还需要检查输入的答案类型以避免后续错误
    • 这行不通 Michael :) OP 说 the input box would return a range of "$A$1" if the cell was clicked or a value of "My Key Word" if the user typed it. 你将如何输出输入/选择的内容?
    • 还是不开心。将 keywordRange 设置为 Variant 并将 type 设置为 10 会产生几个错误。如果选择范围,则会弹出一条消息,显示“文本无效”。并允许我再试一次。那是 Excel,不是我内置的任何错误处理。如果我输入文本,脚本会抛出运行时错误 13,类型不匹配。
    • 迈克尔,Type:10 的困境是你会选择什么? Set keywordRange = Application..keywordRange = Application...
    猜你喜欢
    • 2013-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-29
    • 2022-12-20
    • 2022-11-30
    • 1970-01-01
    相关资源
    最近更新 更多