Excel 基于条件的将单元格复制到其他工作表已取消

Excel 基于条件的将单元格复制到其他工作表已取消,excel,excel-2007,vba,Excel,Excel 2007,Vba,我正在尝试编写宏以将单元格(基于条件)从一张工作表复制到另一张工作表。 当我运行宏时,出现“范围类的特殊方法失败”错误 我试图解决它。但是我做不到 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 Sheet

我正在尝试编写宏以将单元格(基于条件)从一张工作表复制到另一张工作表。 当我运行宏时,出现“范围类的特殊方法失败”错误

我试图解决它。但是我做不到

 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
Sub-update_-tuning()
Dim tun_num、tun_select、source1、target1作为范围
变暗r,变长lr
图纸(“计算”)。选择
设置tun_num=范围(“B2”)
如果tun_num为空,则
图纸(“计算”)。选择
范围(“C22:BE22”)。选择
选择,复制
如果结束
工作表(“数据”\u Lbf\u ft”)。选择
lr=纸张(“数据”磅英尺)范围(“B3:B1803”)。计数
对于r=3至lr
如果范围(“B”&r).Value=tun\u num,则
退出
如果结束
下一个r
工作表(“数据磅英尺”)。范围(“B”和“r”)。选择
Selection.Paste特殊粘贴:=xlPasteValues,操作:=xlNone,SkipBlank_
:=假,转置:=假
端接头

请给出您的意见以解决此问题。

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

嗨,吉普,这很有道理,我没想到。在像你说的那样修改了宏之后,我可以毫无错误地运行它。但是单元格是用公式复制的。我只想将值复制到下一张图纸。你能告诉我怎么做吗?@jsmanian-我更喜欢直接值传递方法,而不是复制、粘贴特殊值。唯一的缺点是接收值的目标范围必须与源范围的大小相同,因此需要额外几行代码才能确保这一点。,