用于两个循环的循环运行的VBA
我试图将一个工作表中的名称列表复制并粘贴到另一个工作表中的特定单元格,具体取决于“列表”工作表中的行是偶数还是奇数 但是,FOR循环只运行两个循环:即一个循环用于第#偶数行中的name,另一个循环用于第#奇数行中的name 谁能告诉我我的错误在哪里 我去掉了IF函数,一切正常。但我需要IF函数来确定奇偶行数 我的当前代码如下:用于两个循环的循环运行的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
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都是颠倒的:(是的!非常感谢!