我目前正在开发一个工具,获取一些数据,但没有获取公式或其他格式。只是纯文本。但是它给了我 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"*
它粘贴了我需要的数据。但是,它复制公式而不是值。
最佳答案
将您的目的地剪切为单个单元格(左上角),然后让粘贴操作填充剩余部分。
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 ,直接值(value)转移将是更好的选择。
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
1 参见 How to avoid using Select in Excel VBA macros了解更多摆脱依赖 select 和 activate 来实现目标的方法。
关于excel - 1004错误(范围类的选择方法失败),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35402740/