【问题标题】:VBA Worksheet Select Dependant On Cell ValueVBA工作表选择取决于单元格值
【发布时间】:2014-01-11 05:30:07
【问题描述】:

我对 VBA 很陌生,所以如果这是一个简单的问题,请原谅!我创建了一个模板报表(标题为“Client_Name”),我希望为每个客户端填充该报表 - 本质上,这涉及到在数据透视表的报表过滤器中选择客户端并将数据透视表的数据值复制到模板中。为了自动执行此操作,我创建了以下代码来复制模板并将其重命名为当前在数据透视表中选择的客户端:

Sheet_Name_To_Create = Sheets("Pivot").Range("B1").Value
Sheets("Client_Name").Select
Sheets("Client_Name").Copy After:=Sheets(Sheets.Count)
Sheets(ActiveSheet.Name).Name = Sheet_Name_To_Create

我的下一步是返回数据透视表(“数据透视”工作表)并将数据复制到新创建的客户端工作表。但是,工作表的名称显然会因每个客户而异。有没有办法引用 VBA 代码来选择与数据透视表的报表过滤器中当前显示的客户端名称相同的工作表?

【问题讨论】:

    标签: excel worksheet vba


    【解决方案1】:

    Sheets(ActiveSheet.Name)ActiveSheet 的一种不方便的说法。

    复制后在变量中捕获ActiveSheet

    Dim CopiedSheet as Worksheet
    Set CopiedSheet = ActiveSheet
    

    当您拥有工作表本身时,您不需要工作表的名称。

    推荐阅读:How to avoid using Select in Excel VBA macros

    【讨论】:

    • 感谢这个提示,虽然我不会遇到循环错误,即 ActiveSheet 是最近复制的模板,然后在我移动复制数据时切换到 Pivot 工作表?因此,一旦我切换到数据透视表,CopiedSheet(即 ActiveSheet)现在就是数据透视表本身,并且无法定向到不再是 ActiveSheet 的重复模板!
    • @user2696883 ActiveSheet 是 Excel 提供的属性。它会自动更改以反映工作表激活。在任何给定时刻,它都包含对工作表的引用。你复制这个参考。您的副本不会自动更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多