1004错误(范围类的选择方法失败)

时间:2016-02-15 06:23:36

标签: excel vba methods range

我目前正在开发一种工具,获取一些数据,但不是公式或其他格式。只是纯文本。但是它给我的错误是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"*

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

1 个答案:

答案 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

相关问题