1004错误(范围级别的select方法失败)

我目前正在使用一个工具,获取一些数据,但不是公式或其他格式。 只是纯文本。 但它给了我1004的错误。

这是我的代码:

Sub WBS() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("totalcosts.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = Workbooks("Backing sheet.xlsm").Worksheets(2).Range("C6:C300") sourceColumn.Copy targetColumn.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Call Resource_Name End Sub 

它总是给我错误的targetcolumn.select

但是当我用这个代码复制粘贴就行了,

 *"sourceColumn.Copy destination=targetcolumn"* 

它粘贴我需要的数据。 但是它复制公式而不是值。

把你的目的地切成一个单元格(左上angular),然后让粘贴操作填充剩下的部分。

 Sub WBS() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("totalcosts.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = Workbooks("Backing sheet.xlsm").Worksheets(2).Range("C6") sourceColumn.Copy targetColumn.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False Call Resource_Name End Sub 

使用Range.PasteSpecial方法直接离开目标范围。 它不需要Range 。先select它的方法吧。

既然你只是传递Range.Value属性 ,直接的价值转移将是更好的select。

 Sub WBS() Dim sourceColumn As Range, targetColumn As Range Set sourceColumn = Workbooks("totalcosts.xlsm").Worksheets(3).Range("A3:A300") Set targetColumn = Workbooks("Backing sheet.xlsm").Worksheets(2).Range("C6") with sourceColumn targetColumn.Resize(.Rows.Count, .Columns.Count) = .Value end with Call Resource_Name End Sub 

¹ 请参阅如何避免使用在Excel VBAmacros中select更多的方法来摆脱依靠select和激活来实现您的目标。