我正在尝试对工作簿中的每个工作表执行相同的功能(对单独的Excel工作簿中的表执行VLookup操作)。我构建了一个VBA脚本,但循环不起作用。VLookup将在我所在的任何工作表上工作,但不会循环其余部分。
脚本:
Sub loop_through_all_worksheets()
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet
For Each ws In ThisWorkbook.Worksheets
Range("AE2").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1], [Vendor.xlsx]AP210!C1:C2,2,FALSE)"
Range("AE2").Select
Selection.AutoFill Destination:=Range("AE2:AE49")
Range("AE2:AE49").Select
Columns("AE:AE").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
starting_ws.Activate
Next
End Sub注意:'Vendor.xlsx‘是第二个文件中的查找表。
我制作了自己的VLookup脚本,并将其添加到我找到的循环脚本中,从而将其拼凑在一起。
选项卡的数量和每个选项卡的名称都是可变的
关于循环不工作的原因,有什么建议吗?我这样做是不是完全错了?
首先,谢谢你的帮助
发布于 2017-05-24 04:06:29
避免使用.Select和.Activate
与块一起使用,并使用循环对象设置父工作表。
Sub loop_through_all_worksheets()
Dim ws As Worksheet
Dim starting_ws As Worksheet
Set starting_ws = ActiveSheet
For Each ws In ThisWorkbook.Worksheets
With ws.Range("AE2:AE49")
.FormulaR1C1 = "=VLOOKUP(RC[-1], [Vendor.xlsx]AP210!C1:C2,2,FALSE)"
.Value = .Value
End With
Next
starting_ws.Activate
End Subhttps://stackoverflow.com/questions/44143920
复制相似问题