用于两个循环的循环运行的VBA

用于两个循环的循环运行的VBA,vba,excel,for-loop,if-statement,Vba,Excel,For Loop,If Statement,我试图将一个工作表中的名称列表复制并粘贴到另一个工作表中的特定单元格,具体取决于“列表”工作表中的行是偶数还是奇数 但是,FOR循环只运行两个循环:即一个循环用于第#偶数行中的name,另一个循环用于第#奇数行中的name 谁能告诉我我的错误在哪里 我去掉了IF函数,一切正常。但我需要IF函数来确定奇偶行数 我的当前代码如下: Sub Update_Print() Dim i As Integer For i = 7 To 1000 Sheets("List").Select

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

但是,FOR循环只运行两个循环:即一个循环用于第#偶数行中的name,另一个循环用于第#奇数行中的name

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

我去掉了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

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
宏运行后,是否要打印工作表?我注意到您的
活动页的位置。打印
可能处于相当危险的位置,因为它将打印您的活动页大约1000次!我在完全执行For循环的
之后,将其分配到循环之外


这种方法复制值的速度更快,但不会产生任何格式。

这是因为在
Else
中有
退出
,所以一旦第二次运行循环,
i=8
,所以
i Mod 2=0
,所以进入
Else
部分,最后,您到达
退出
,然后退出
For
循环。啊,是的,我现在看到了。谢谢!在else部分,第一个sht2可能是sht1?如果格式是必要的,您也可以避免使用类似于sht1.cells(i,1)的代码来选择
,例如,复制sht2.cells(i+30,4)
,谢谢您发现了这一点。PatrickLepelletierYes已经修复,我现在看到了End For循环的问题。我尝试了“=”方法。但它会擦除sht1中所有单元格(i,1)中的数据。奇怪。啊,是的,哈哈。在“if-then-else”中,所有的sht1和2都是颠倒的:(是的!非常感谢!