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