具有VBA循环的Excel工作簿中的所有工作表的Vlookup无法正常工作

时间:2017-05-23 19:55:47

标签: excel vba

我试图在工作簿中的每个工作表上执行相同的功能(从单独的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脚本拼凑起来并将其添加到我找到的循环脚本中。

标签数量和每个标签的名称都是可变的

关于循环不起作用的任何输入?我完全不喜欢这个吗?

提前感谢您的帮助

1 个答案:

答案 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