VBA FOR循环运行两个循环

时间:2017-06-22 05:37:43

标签: vba excel-vba for-loop if-statement excel

我试图将一个工作表中的名称列表复制并粘贴到另一个工作表中的特定单元格,这取决于" List"中的行#。表格是偶数还是奇数。

然而,FOR循环仅运行两个循环:即。行#name中的名称的一个循环和行#odd中的名称的一个循环。

谁能告诉我我的错误在哪里?

我拿走了IF函数,一切运行良好。但我需要IF函数来确定奇数/偶数行号。

我目前的代码如下:

Sub Update_Print()


Dim i As Integer

For i = 7 To 1000
    Sheets("List").Select
    If i Mod 2 > 0 Then

        Cells(i, 1).Select
        Selection.Copy
        Sheets("Receipts").Select
        Cells(i + 30, 4).Select
        ActiveSheet.Paste

     Else
        Cells(i, 1).Select
        Selection.Copy
        Sheets("Receipts").Select
        Cells(i + 30, 10).Select
        ActiveSheet.Paste

    ActiveSheet.Print

Exit For

End If


Next i



End Sub

1 个答案:

答案 0 :(得分:1)

for循环和if..else循环可能放错位置。

我可以建议以下内容,它也试图避免使用复制粘贴,这通常会减慢执行时间。

Sub Update_Print()

Dim i As Integer
Dim sht1, sht2 As Worksheet
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Set sht1 = ActiveWorkbook.Sheets("List")
Set sht2 = ActiveWorkbook.Sheets("Receipts")

sht1.Activate
For i = 7 To 1000

    If i Mod 2 > 0 Then
        sht1.Cells(i, 1) = sht2.Cells(i + 30, 4)
    Else
        sht1.Cells(i, 1) = sht2.Cells(i + 30, 10)
    End If

Next i
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
sht1.PrintOut

End Sub

您是否尝试在宏运行后打印表单?我注意到ActiveSheet.Print的位置可能处于相当危险的位置,因为它会打印活动表大约1000次!在完成For Loop

的完整执行之后,我已经在循环之外分配了它

此方法可以更快地复制值,但不会带来任何格式化。