首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用VBA循环的Excel工作簿中所有工作表的Vlookup不起作用

使用VBA循环的Excel工作簿中所有工作表的Vlookup不起作用
EN

Stack Overflow用户
提问于 2017-05-24 03:55:47
回答 1查看 860关注 0票数 0

我正在尝试对工作簿中的每个工作表执行相同的功能(对单独的Excel工作簿中的表执行VLookup操作)。我构建了一个VBA脚本,但循环不起作用。VLookup将在我所在的任何工作表上工作,但不会循环其余部分。

脚本:

代码语言:javascript
复制
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脚本,并将其添加到我找到的循环脚本中,从而将其拼凑在一起。

选项卡的数量和每个选项卡的名称都是可变的

关于循环不工作的原因,有什么建议吗?我这样做是不是完全错了?

首先,谢谢你的帮助

EN

回答 1

Stack Overflow用户

发布于 2017-05-24 04:06:29

避免使用.Select.Activate

与块一起使用,并使用循环对象设置父工作表。

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44143920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档