基于条件的复制单元格到另一个 sheet 已取消

Conditional based copy cells to another sheet cancelled

我正在尝试编写宏以将单元格(基于条件)从一个 sheet 复制到另一个 sheet。 当我 运行 宏时,出现 "pasteSpecial method of Range class failed" 错误。

我试着解决了。但是我做不到。

 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

请提出意见解决。

您的 .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