Excel 将大量选定数据从一个工作簿移动到另一个工作簿

Excel 将大量选定数据从一个工作簿移动到另一个工作簿,excel,excel-2010,vba,Excel,Excel 2010,Vba,我正在尝试编写一些代码,将大量用户选择的数据从一个打开的工作簿传输到另一个工作簿。行数/列数不同,目标工作簿中的起点也不同。 我得到一个调试运行时错误“13”:代码最后一行的类型不匹配。也许有一种更优雅的方式来做一些事情,比如确定目的地范围的大小,但其他一切似乎都按照预期进行 Public SourceWorkbook As Workbook Public SourceWorksheet As Worksheet Public DestWorkbook As Workbook Public De

我正在尝试编写一些代码,将大量用户选择的数据从一个打开的工作簿传输到另一个工作簿。行数/列数不同,目标工作簿中的起点也不同。 我得到一个调试运行时错误“13”:代码最后一行的类型不匹配。也许有一种更优雅的方式来做一些事情,比如确定目的地范围的大小,但其他一切似乎都按照预期进行

Public SourceWorkbook As Workbook
Public SourceWorksheet As Worksheet
Public DestWorkbook As Workbook
Public DestWorksheet As Worksheet
Public selectedRange As Range
Public selectedRows As Long
Public selectedColumns As Long
Sub SelectRange()
    Set SourceWorkbook = ActiveWorkbook
    Set SourceWorksheet = ActiveSheet
    'Display the Input Box to make selection
    On Error Resume Next
    Set selectedRange = Application.InputBox( _
        Prompt:="Select the range of cells you want to copy.", _
        title:="Select Range", _
        Default:=ActiveCell.Address, _
        Type:=8)
'   Was the Input Box canceled?
    If selectedRange Is Nothing Then
        MsgBox "Cancelled"
        Exit Sub
    End If
    selectedRange.Select
    'Set row and column number variables
    selectedRows = Selection.Rows.Count
    selectedColumns = Selection.Columns.Count
    'vbModeless Form that allows user to select another open workbook and start cell. The OK button simply calls the MoveData sub. 
    SwitchWorkbooksForm.Show vbModeless
End Sub

Sub MoveData()
    Dim DestRange As Range
    Set DestWorkbook = ActiveWorkbook
    Set DestWorksheet = ActiveSheet
'Start the desination range at the user select cell and Set it to the same size as the originally selected range
    StartRow = ActiveCell.Row
    finalRow = StartRow + selectedRows - 1
    StartColumn = ActiveCell.Column
    finalColumn = StartColumn + selectedColumns - 1
    Range(Cells(StartRow, StartColumn), Cells(finalRow, finalColumn)).Select
    Set DestRange = Selection

    'Debug error on the next line
    Workbooks(DestWorkbook).Worksheets(DestWorksheet).Range(DestRange).Value = _
    Workbooks(SourceWorkbook).Worksheets(SourceWorksheet).Range(selectedRange).Value
End Sub
您正在使用工作簿。。。和工作表。。。通过传入工作簿和工作表对象创建集合。您应该输入姓名或使用直接指定的工作簿和工作表引用

Workbooks(DestWorkbook.name).Worksheets(DestWorksheet.name).Range(DestRange.address).Value = _
   Workbooks(SourceWorkbook.name).Worksheets(SourceWorksheet.name).Range(selectedRange.address).Value
。。。或者

DestRange = selectedRange.Value

您不必不断重新定义已设置的范围对象的父对象。

哇,我非常接近,我有:DestRange.Value=selectedRange.Value。谢谢