首页 > 解决方案 > VBA - For ...下一个循环

问题描述

如果条件合适,我正在尝试将值从一张纸复制到另一张纸。我用 3 个嵌套循环做到了。不幸的是,代码只给了我第一个值。

例如:

我 = 7, j = 3, k = 2

(i, j) = (7,3) 是“Januar”表中的“E”。然后这个 E 被不断地复制和粘贴。

但我想要第二个值(i,j)=(7,4),这是一个“U”复制和粘贴等等......

我不太明白我的代码中的问题出在哪里。如果有人可以帮助我,我会很高兴。我也会很高兴有一个更好更快的解决方案。

Dim i As Integer, Dim j As Integer, Dim k As Integer

For i = 7 To 37
    If Worksheets("Januar").Cells(i, 2).Value = Worksheets("Drucken").Cells(12, 12).Value Then
        For j = 3 To 5
            Worksheets("Januar").Cells(i, j).Copy
                For k = 2 To 4
                    Worksheets("Drucken").Activate
                    Worksheets("Drucken").Cells(38, k).Select
                    ActiveSheet.Paste
                Next
            Worksheets("Januar").Activate
        Next
    End If
Next

编辑:

这就是我想要的

我希望将 Sheet("Januar") 中的这些值复制并粘贴到 在此处输入图像描述

此表(“Druken”) 在此处输入图像描述

我解决了这样的问题:

Dim i As Integer
   
For i = 7 To 37
If Worksheets("Januar").Cells(i, 2).Value = Worksheets("Drucken").Cells(12, 12).Value Then
        Worksheets("Januar").Cells(i, 3).Copy Worksheets("Drucken").Cells(38, 2)
        Worksheets("Januar").Cells(i, 4).Copy Worksheets("Drucken").Cells(38, 3)
        Worksheets("Januar").Cells(i, 5).Copy Worksheets("Drucken").Cells(38, 4)
        Worksheets("Januar").Cells(i, 6).Copy Worksheets("Drucken").Cells(38, 5)
        Worksheets("Januar").Cells(i, 7).Copy Worksheets("Drucken").Cells(38, 6)
        Worksheets("Januar").Cells(i, 8).Copy Worksheets("Drucken").Cells(38, 7)
        Worksheets("Januar").Cells(i, 9).Copy Worksheets("Drucken").Cells(38, 8)
        Worksheets("Januar").Cells(i, 10).Copy Worksheets("Drucken").Cells(38, 9)
        Worksheets("Januar").Cells(i, 11).Copy Worksheets("Drucken").Cells(38, 10)
        Worksheets("Januar").Cells(i, 12).Copy Worksheets("Drucken").Cells(38, 11)
        Worksheets("Januar").Cells(i, 13).Copy Worksheets("Drucken").Cells(38, 12)
        Worksheets("Januar").Cells(i, 14).Copy Worksheets("Drucken").Cells(38, 13)
        Worksheets("Januar").Cells(i, 15).Copy Worksheets("Drucken").Cells(38, 14)
        Worksheets("Januar").Cells(i, 16).Copy Worksheets("Drucken").Cells(38, 15)
        Worksheets("Januar").Cells(i, 17).Copy Worksheets("Drucken").Cells(38, 16)
        Worksheets("Januar").Cells(i, 18).Copy Worksheets("Drucken").Cells(38, 17)
        Worksheets("Januar").Cells(i, 19).Copy Worksheets("Drucken").Cells(38, 18)
        Worksheets("Januar").Cells(i, 20).Copy Worksheets("Drucken").Cells(38, 19)
        Worksheets("Januar").Cells(i, 21).Copy Worksheets("Drucken").Cells(38, 20)
        Worksheets("Januar").Cells(i, 22).Copy Worksheets("Drucken").Cells(38, 21)
        Worksheets("Januar").Cells(i, 23).Copy Worksheets("Drucken").Cells(38, 22)
        Worksheets("Januar").Cells(i, 24).Copy Worksheets("Drucken").Cells(38, 23)
        Worksheets("Januar").Cells(i, 25).Copy Worksheets("Drucken").Cells(38, 24)
        Worksheets("Januar").Cells(i, 26).Copy Worksheets("Drucken").Cells(38, 25)
        Worksheets("Januar").Cells(i, 27).Copy Worksheets("Drucken").Cells(38, 26)
        Worksheets("Januar").Cells(i, 28).Copy Worksheets("Drucken").Cells(38, 27)
        Worksheets("Januar").Cells(i, 29).Copy Worksheets("Drucken").Cells(38, 28)
        Worksheets("Januar").Cells(i, 30).Copy Worksheets("Drucken").Cells(38, 29)
        Worksheets("Januar").Cells(i, 31).Copy Worksheets("Drucken").Cells(38, 30)
        Worksheets("Januar").Cells(i, 32).Copy Worksheets("Drucken").Cells(38, 31)
        Worksheets("Januar").Cells(i, 33).Copy Worksheets("Drucken").Cells(38, 32)
End If
Next

但我认为 for next 循环更好。但我不知道为什么它不能使用上面的代码......

标签: excelvbaloopsfor-loop

解决方案


请尝试下一个代码。我只希望我能理解你(真正)需要什么:

Sub testIterations()
 Dim i As Long, j As Long, k As Long

 k = 2
 For i = 7 To 37
    If Worksheets("Januar").cells(i, 2).value = Worksheets("Drucken").cells(12, 12).value Then
        For j = 3 To 5
            'Worksheets("Januar").cells(i, j).Copy Worksheets("Drucken").cells(38, k)
            Worksheets("Drucken").cells(38, k).value = Worksheets("Januar").cells(i, j).value
            k = k + 1
        Next
    End If
 Next
End Sub

如果我的理解是正确的,你也需要复制格式吗?或者只有价值观就足够了。如果只有值,代码可以更快,不涉及剪贴板。


推荐阅读