vba嵌套for循环

时间:2021-07-21 15:12:45

标签: excel vba

我仍在学习过程中,所以我需要一点帮助。

我有这个代码

worksheets("List").Activate

Range("B2").Activate

    For i = 0 To 500
        ActiveCell.Offset(i, 0).Select
        Selection.Copy
        
        For j = 0 To 8000
        
            Worksheets("Code").Activate
            Range("C2").Activate
        
            ActiveCell.Offset(j, 0).Range("A1").Select
            ActiveSheet.Paste
            
            j = j + 13
    
        Next j
    
    Next i

End Sub 

所以基本上我想要做的是将列表工作表中的一个单元格复制到代码工作表上的另一个单元格上。但我希望它每次将单元格复制到代码工作表时跳过 13 个单元格。我认为嵌套它的方式存在问题,所以我希望它从 List 工作表中复制 i,将其粘贴到代码工作表上的 j 上,然后返回,从 List 工作表中复制下一个 i,然后将其粘贴到代码表上的第 (j + 13) 个单元格并循环,直到复制所有 i 值。有人可以帮我纠正循环嵌套吗,我真的很感激! :)

我认为我每次都将相同的 i 值复制到 j + 13 上,这不是我想要的。

1 个答案:

答案 0 :(得分:1)

解释您拥有的代码有点困难,但这样的事情可能很接近:

Sub Tester()
    Dim wsList As Worksheet, wsCode As Worksheet, i As Long
    
    Set wsList = Worksheets("List")
    Set wsCode = Worksheets("Code")
    
    For i = 1 To 500
        'copy/paste
        wsList.Range("B2").Offset(i - 1).Copy _
            wsCode.Range("C2").Offset((i - 1) * 13)

        'or copy value only (faster)
        wsCode.Range("C2").Offset((i - 1) * 13).Value = _
            wsList.Range("B2").Offset(i - 1).Value

    Next i
End Sub

无需激活/选择