如果为true,则在For循环中复制

时间:2014-10-14 16:01:35

标签: excel vba

我真的很擅长使用vba。我想要做的是逐个查看列的单元格中的值" 1"。

如果找到,则移回4列并将内容复制到上一行。并在整个专栏中重复这一点。我尝试了以下代码,但它没有用。

Sub find()
'
' find Macro

    Range("M1").Select
    Range(Selection, Selection.End(xlDown)).Select

       For Each xCell In Selection
       If ActiveCell.Value = 1 Then
       ActiveCell.Offset(0, -4).Copy
       ActiveCell.Offset(-1, -4).Select
       ActiveSheet.Paste
       'Else
       'ActiveCell.Offset(1, 0).Select
      End If
      Next xCell


End Sub

1 个答案:

答案 0 :(得分:1)

您在循环xCell时使用ActiveCell。通常,您不必使用Selection和ActiveCell。 Sub你应该看起来像这样:

Sub find()

    For Each xcell In Range(Range("M1"), Range("M1").End(xlDown))
        If xcell.Value = 1 Then
           xcell.Offset(0, -4).Copy Destination:=xcell.Offset(-1, -4)
        End If
    Next xcell

End Sub