我正在尝试编写宏来将单元格(基于条件)从一个工作表复制到另一个工作表。 当我运行宏时,我得到“Range类失败的pasteSpecial方法”错误。
我试图解决它。但我无法做到。
Sub update_tuning()
Dim tun_num, tun_select, source1, target1 As Range
Dim r, lr As Long
Sheets("Calc").Select
Set tun_num = Range("B2")
If tun_num <> Null Then
Sheets("Calc").Select
Range("C22:BE22").Select
Selection.Copy
End If
Sheets("DATA_Lbf_ft").Select
lr = Sheets("DATA_Lbf_ft").Range("B3:B1803").Count
For r = 3 To lr
If Range("B" & r).Value = tun_num Then
Exit For
End If
Next r
Sheets("DATA_Lbf_ft").Range("B" & r).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
请发表意见解决。
答案 0 :(得分:0)
.Copy
和.PasteSpecial
之间的操作过多。 .CutCopyMode
(当您通常会看到工作表上复制的单元格周围闪烁的边框时)将被其他操作取消。
最好在完成目的地确定后进行复制和粘贴。
For r = 3 To lr
If Range("B" & r).Value = tun_num Then
Exit For
End If
Next r
Sheets("Calc").Range("C22:BE22").copy _
destination:=Sheets("DATA_Lbf_ft").Range("B" & r)
如果您放弃原始复制操作并使用此方法,我相信您应该得到您正在寻找的结果。
附录:
仅限值传输将以下内容替换为.Copy Destination:= ...
操作。
With Sheets("Calc").Range("C22:BE22")
Sheets("DATA_Lbf_ft").Range("B" & r).Resize(.Rows.Count, .Columns.Count) = .Cells.Value
End With