我目前正在开发一种工具,获取一些数据,但不是公式或其他格式。只是纯文本。但是它给我的错误是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"*
粘贴我需要的数据。但是它会复制公式而不是值。
答案 0 :(得分:2)
将您的目的地向下切割到单个单元格(左上角),然后让粘贴操作填充剩余部分。
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 method。首先不需要Range .Select方法¹。
由于您只转移Range.Value property,因此直接转移价值是更好的选择。
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
¹有关远离依赖选择和激活以实现目标的更多方法,请参阅How to avoid using Select in Excel VBA macros。