Arrays 如何在循环中到达不同的阵列
因此,我基本上需要在循环中同时处理不同的数组,以便在每个不同的表上粘贴值。我不明白如何让两者都进步Arrays 如何在循环中到达不同的阵列,arrays,excel,vba,loops,variables,Arrays,Excel,Vba,Loops,Variables,因此,我基本上需要在循环中同时处理不同的数组,以便在每个不同的表上粘贴值。我不明白如何让两者都进步 Sub TransAll() Application.ScreenUpdating = False Application.DisplayAlerts = False Application.EnableEvents = False Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook Dim
Sub TransAll()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Dim wb1 As Workbook, wb2 As Workbook, wb3 As Workbook
Dim Arr1 As Variant, Arr2 As Variant, Arr3 As Variant, Arr4 As Variant
Dim i As Integer
Dim x As Integer
Set wb1 = Workbooks("primecost.xlsm")
Set wb2 = Workbooks("inventory.xlsm")
Set wb3 = Workbooks("transmanager.xlsm")
Arr1 = Array(2, 3, 5, 6)
Arr2 = Array(2, 3, 4, 5, 6, 7)
Arr3 = Array(1, 2, 3, 4)
Arr4 = Array(5, 6, 7, 8, 9)
'for "I" works fine by iteself, but it needs "I" and "X" to progress accordingly in the same loop according to the different arrays.
For i = LBound(Arr1) To UBound(Arr1)
'For x = LBound(Arr3) To UBound(Arr3)
wb1.Sheets(Arr1(i)).Cells.Copy
wb3.Sheets(Arr3(x)).Cells.PasteSpecial Paste:=xlPasteValues
Next i
'Next x
'------------------------------------------------------------------
'this works but on at a time... very slow and a pain
'wb1.Sheets(6).Cells.Copy
'wb3.Sheets(1).Cells.PasteSpecial Paste:=xlPasteValues
'------------------------------------------------------------------
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
我只需要知道如何让两个变量在同一个循环中进行。要在
I
之前增加x
只需将Next x
切换到Next I
之前
解决方案发布评论 将您的循环更新为
For i = LBound(Arr1) To UBound(Arr1)
wb1.Sheets(Arr1(i)).Cells.Copy
wb3.Sheets(Arr3(i)).Cells.PasteSpecial Paste:=xlPasteValues
Next i
要在
i
之前增加x
,只需将Next x
切换到Next i
之前
解决方案发布评论 将您的循环更新为
For i = LBound(Arr1) To UBound(Arr1)
wb1.Sheets(Arr1(i)).Cells.Copy
wb3.Sheets(Arr3(i)).Cells.PasteSpecial Paste:=xlPasteValues
Next i
只需在使用后添加说,
x=x+1
,或者将您的Next x
移动到Next i
上方即可。。。真的很简单。。。在我。。。有时候我讨厌这件事。。。哈哈,谢谢你!只需在使用后添加说,x=x+1
,或者将您的Next x
移动到Next i
上方即可。。。真的很简单。。。在我。。。有时候我讨厌这件事。。。哈哈,谢谢你!它贯穿并最终在每一页上粘贴第一个数组(I)的最后一页。。。因此,它的行为就像它是粘贴2,3,5,6在每一页上,6是最后一个是一个显示。。。它应该是在x-1上粘贴I-2,在x-2上粘贴I-3,依此类推…在下一个x上运行4次,然后在下一个I和x上运行4次。。。所以不是一起读。。。它需要是下一个x和我在同一时间哦-所以你只需要4份拷贝/粘贴?我跟随,请查看我的解决方案底部的编辑。这取决于Arr1
和Arr3
的大小始终相同。它贯穿并最终在每页上粘贴第一个数组(I)的最后一页。。。因此,它的行为就像它是粘贴2,3,5,6在每一页上,6是最后一个是一个显示。。。它应该是在x-1上粘贴I-2,在x-2上粘贴I-3,依此类推…在下一个x上运行4次,然后在下一个I和x上运行4次。。。所以不是一起读。。。它需要是下一个x和我在同一时间哦-所以你只需要4份拷贝/粘贴?我跟随,请查看我的解决方案底部的编辑。这取决于Arr1
和Arr3
的大小始终相同。
For i = LBound(Arr1) To UBound(Arr1)
wb1.Sheets(Arr1(i)).Cells.Copy
wb3.Sheets(Arr3(i)).Cells.PasteSpecial Paste:=xlPasteValues
Next i