我正在尝试循环工作簿的所有工作表并复制粘贴值。这是我的代码:
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的初学者。
答案 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行代码:)