前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用VBA基于列表移动工作表

使用VBA基于列表移动工作表

作者头像
fanjy
发布2022-11-16 11:45:27
8740
发布2022-11-16 11:45:27
举报
文章被收录于专栏:完美Excel

标签:VBA

问题:工作簿中有一个汇总(Summary)工作表,它需要计算开始(Begin)工作表和结束(End)工作表之间的所有工作表中的数据,如下图1所示。

图1

然而,在开始(Begin)工作表和结束(End)工作表之间的工作表是根据列表中的选择来确定的。如下图2所示,列表中只选择了QLD、TAS、WA、NSW、VIC五个工作表,因此只计算这五个工作表的汇总。

图2

但是,列表中的选择变化后,想要根据列表中选择内容将相应的工作表灵活地移入或移出Begin工作表和End工作表之间,如下图3所示。

图3

可以使用VBA来实现。

也就是说,首先在列表中选择要进行汇总的工作表,然后单击“Move”按钮,这些选择的工作表就会自动调整到开始(Begin)工作表和结束(End)工作表之间,并自动更新Summary工作表。

VBA代码如下:

代码语言:javascript
复制
Sub Move()
    Dim i As Integer
    Sheet5.Move after:=Sheet2
    For i = 1 To Sheet1.Range("B" & Rows.Count).End(xlUp).Row - 10
        Sheets(CStr(Sheet1.Range("B" & i + 10))).Move after:=Sheet2
    Next i
    Sheet1.Select
End Sub

由于列表从第11行开始,需要从循环的动态上限范围中减去10,这将使代码能够拾取循环中的每一工作表。

注:本文学习整理自thesmallman.com,有兴趣的朋友可以到原网站下载示例工作簿,也可以到知识星球App完美Excel社群下载示例工作簿。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档