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

我一直在这个代码上工作,我的目标是做一个循环(从单元格N5开始),直到这个列上的最后一个非空单元格。 循环应该检查活动单元是否为0,如果它的0,只是去细胞波纹pipe,如果不是它应该复制和粘贴在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 

只要粘贴值,可以考虑直接赋值。

 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 

这段代码将会更有效地做你正在寻找的东西。

 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