首页 > 解决方案 > 如何让用户在另一个工作表中选择单元格,然后粘贴到它,在 Excel 中使用 VBA

问题描述

我想从一个工作表中选择一系列单元格,按下一个按钮,让用户选择另一个工作簿中另一张工作表上的单元格,然后将复制的单元格粘贴在那里。

我有以下代码:

Private Sub btnCopyPaste_Click()

Dim CopyWS As Worksheet
Set CopyWS = ActiveWorkbook.Sheets("CopySheet")

Dim rngMyRange As Range

    If TypeName(Selection) = "Range" Then
        Set rngMyRange = Selection

            Dim sCell As String
            sCell = Range(Application.InputBox(Prompt:="Pick the Cell", Type:=8)).Value

        rngMyRange.Copy .Range(sCell) 'this is the bad line

    Else
        Exit Sub
    End If

End Sub

我正在尝试使用 Application.InputBox 从用户那里获取“要粘贴的单元格”,但是我无法获取有关该单元格的相关信息。比如,工作簿/工作表位置。

当我运行代码并在出现提示时选择“要粘贴的单元格”时,表单上的输入框会显示:'[WorkbookName]SheetName'!$A$1 ..

此信息是否存储在后台,以便我可以使用命令访问它,还是我必须获取此字符串并剖析它?

谢谢您的帮助!

标签: excelvba

解决方案


像这样的东西应该工作:

Private Sub btnCopyPaste_Click()

    Dim rngMyRange As Range, c As Range

    If TypeName(Selection) = "Range" Then
        Set rngMyRange = Selection

        On Error Resume Next 'in case user cancels
        Set c = Application.InputBox(Prompt:="Pick the Cell", Type:=8)
        On Error GoTo 0

        If Not c Is Nothing Then rngMyRange.Copy c

    End If

End Sub

推荐阅读