VBA常用小代码006:按指定名称批量建立工作表

论坛 期权论坛 期权     
VBA编程学习与实践   2019-6-29 21:03   3945   0


如何按指定单元格范围的名称批量建立工作表?
Excel基础技巧玩的酷酷的朋友可能会立刻想到数据透视表,对这个透视表技巧还不甚了解的,可以参考下面的操作动画:


如果用VBA解决这样的问题——
有人问,既然有透视表的方法,干嘛还说VBA啊?
因为我这是VBA公众号啊——开个玩笑,我们今天分享批量建立工作表,下期在此代码的基础上,再分享一键拆分总表数据成各个分表~
很多时候,就像嵌套函数一样,一段VBA代码往往也是由几段基础的常用代码组合而成的。
如下图所示,A列是需要建立工作表的名称。
                  
           
VBA根据A列数据批量建立工作表的代码如下:
Sub NewSht()    Dim Sht As Worksheet, shtA As Worksheet    Dim i As Long, strShtName As String    On Error Resume Next    '当代码出错时继续运行    Set shtA = ActiveSheet    For i = 2 To shtA.Cells(Rows.Count, 1).End(xlUp).Row    '单元格A1是标题,不读入,从第2行开始读取        strShtName = shtA.Cells(i, 1).Value        '还记得这里我们为什么用这句代码吗?        Set Sht = Sheets(strShtName)        '当工作簿不存在工作表Sheets(strShtName)时,这句代码会出错,然后……        If Err Then        '如果代码出错,说明不存在工作表Sheets(t),则新建工作表            Worksheets.Add , Sheets(Sheets.Count)            '新建一个工作表,位置放在所有已存在工作表的后面            ActiveSheet.Name = strShtName            '新建的工作表必然是活动工作表,为之命名            Err.Clear            '清除错误状态        End If    Next    shtA.Activate    '重新激活原工作表End Sub


复制该段代码后,操作过程参见下图动画:





小提示:
该段代码是根据当前工作表A的数据批量建立工作表,因此在运行该段代码之前,务必先激活存放工作表名称的工作表哦。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:220
帖子:44
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP