我试图将一个工作表中的名称列表复制并粘贴到另一个工作表中的特定单元格,这取决于" 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
答案 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
。
此方法可以更快地复制值,但不会带来任何格式化。