如果activecell不为0,则循环复制并粘贴

时间:2016-01-04 22:25:55

标签: excel vba excel-vba

我一直在研究这个代码,我的目标是做一个循环(从单元格N5开始),直到该列上的最后一个非空单元格。循环应该检查activecell是否为0,如果它是0,只是转到下面的单元格,如果不是,它应该将它的值复制并粘贴在F列的同一行。我写了这个但是有些错误,可以你能帮帮我吗?谢谢!

Sub inserir_offshore1()

    Do Until x = 50
        Worksheets("Sistema Duda").Range("f5").Activate
        If ActiveCell <> 0 Then ActiveCell.Copy
            ActiveCell.Offset(0, -8).PasteSpecial xlPasteValues
            x = x + 1
        End If
        ActiveCell.Offset(1, 0).Select
    Loop

End Sub

2 个答案:

答案 0 :(得分:2)

此代码可以更有效地完成您正在寻找的内容。

Sub inserir_offshore1()

Dim LastRow as Long, ws as Worksheet

Set ws = Sheets("Sistema Duda")
LastRow = ws.Range("N" & ws.Rows.Count).End(xlUp).Row

For x = 5 to LastRow
    If ws.Range("N" & x).Value <> 0 Then
        ws.Range("N" & x).Copy
        ws.Range("F" & x).PasteSpecial xlPasteValues
    End If
Next x

End Sub

答案 1 :(得分:2)

只需粘贴值,请考虑直接分配值。

Sub inserir_offshore1()
Dim cel As Range
With Worksheets("Sistema Duda")
    For Each cel In .Range("N5", .Range("N" & .Rows.Count).End(xlUp))
        If cel <> 0 Then
            cel.Offset(0, -8) = cel.value
        End If
    Next cel
End With

End Sub