如何使用输入框引用单元格?

Posted

技术标签:

【中文标题】如何使用输入框引用单元格?【英文标题】:How to reference a cell using an input box? 【发布时间】:2020-01-29 19:52:02 【问题描述】:

我有一个消息框来插入用户选择的单元格区域。 我希望该单元格成为新的活动单元格。 执行此操作的 VBA 代码是什么?

这是我拥有的 VBA,但它不会更改活动单元格。

Sub AddClient()

    'Message Box
    Dim userResponce As Range
    On Error Resume Next

    Set userResponce = Application.InputBox("Place curser on Client Name that you want to insert new one above")
    On Error GoTo 0

    If userResponce Is Nothing Then
        MsgBox "Cancel clicked"
    Else
        MsgBox "You selected " & userResponce.Address
    End If

End Sub

【问题讨论】:

userResponce.Select 另外,为Application.InputBox指定Type - Type:=8 -。 @ScottCraner 的解决方案就是答案 - 但您可能需要在 Selecting 之前使用 userResponce.Parent.Activate,以防该工作表尚未激活。 虽然通常你不需要Select。您可以在没有Selecting 的情况下Insert 一行。 谢谢 - 但我想我不知道在哪里插入您的解决方案。我尝试了各种方法,但每次都会出错。 Siddharth 下面的详细解决方案非常完美。 【参考方案1】:

如果你想激活单元格,那么你可以使用Application.Goto。如果您只想插入行,那么您不需要像@BigBen 提到的那样使单元格处于活动状态。您可以直接插入行而不激活单元格或行。

例如

userResponce.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

还可以将Application.InputBoxType:=8 一起使用,如Application.InputBox method 所示

如果要激活单元格,请使用以下内容。

Sub AddClient()
    Dim userResponce As Range
    Dim prmt As String

    prmt = "Place cursor on Client Name that you want to insert new one above"

    On Error Resume Next
    Set userResponce = Application.InputBox(prompt:=prmt, Type:=8)
    On Error GoTo 0

    If userResponce Is Nothing Then
        MsgBox "Cancel clicked"
    Else
        Application.Goto Reference:=userResponce
    End If
End Sub

【讨论】:

以上是关于如何使用输入框引用单元格?的主要内容,如果未能解决你的问题,请参考以下文章

当另一个框在excel(VBA)中具有特定值时,如何引用msgBox中的单元格。

如何使用用户输入数字在Excel中引用单元格

使用单元格中的值作为公式中的单元格引用?

如何查找单元格中是不是包含部分文本并引用另一列数据

在excel中横向拖动公式,如何实现引用的单元格地址行号递增?

Excel如何快速选定所需数据区域