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

2022-11-16 11:45:27 浏览数 (1)

标签: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社群下载示例工作簿。

vba

0 人点赞