在工作表上的工作簿中循环

时间:2015-10-16 03:04:54

标签: excel vba excel-vba

我正在尝试循环工作簿的所有工作表并复制粘贴值。这是我的代码:

Sub paste_hard()

    Dim ws As Worksheet
    Dim rng As Range

    For Each ws In ActiveWorkbook.Worksheets

        Set rng = ws.Range("A1:C500")
        rng.Select
        Selection.Copy
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False

    Next ws

    Range("A1:C500") = rng

End Sub

问题来自rng.Select,我收到以下错误:

  

方法'选择'对象'范围'失败

我是vba的初学者。

1 个答案:

答案 0 :(得分:0)

您只能在活动工作表上选择范围。您的错误正在发生,因为您正在尝试Select在运行时不活动的工作表上的范围。

一个(丑陋的)解决方案是将ws.Activate放入你的循环中(Set rng = ...之前

instead of gunking up your code with a bunch of unnecessary Select and Activate statements,请执行此操作 - 如果您只关注,那么您无需对Copy执行任何操作,{{ 1}}或Paste

PasteSpecial

瞧,5行代码变为2行代码:)