基于条件的复制单元格到另一个 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
我正在尝试编写宏以将单元格(基于条件)从一个 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