我试图在工作簿中的每个工作表上执行相同的功能(从单独的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脚本拼凑起来并将其添加到我找到的循环脚本中。
标签数量和每个标签的名称都是可变的
关于循环不起作用的任何输入?我完全不喜欢这个吗?
提前感谢您的帮助
答案 0 :(得分:1)
避免使用.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 Sub