【孙兴华vba第一季】E1-批量创建新工作表-个人解法

本文对比了两种使用VBA在Excel中批量创建工作表的方法。第一种方法巧妙地利用错误处理机制,当尝试访问的工作表不存在时新建;第二种方法则是直接新建工作表并命名。两种方法都遍历指定列的值作为新工作表的名字。通过这个实例,读者可以学习到VBA在自动化Excel操作中的实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐孙老师的vba课程
《跟着孙兴华学习Excel VBA 第一季》

题目:批量创建工作表

老师解法

Sub NewSht()
    Dim shtActive As Worksheet, sht As Worksheet
    Dim i As Long, strShtName As String
    On Error Resume Next '当代码出错时继续运行
    Set shtActive = ActiveSheet
    For i = 2 To shtActive.Cells(Rows.Count, 1).End(xlUp).Row
    '单元格A1是标题,跳过,从第2行开始遍历工作表名称
        strShtName = shtActive.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
    shtActive.Activate
    '重新激活原工作表
End Sub

老师的解法很妙的地方在于通过触发错误进行工作表创建

个人解法

Sub NewSht()
    Dim shtActive As Worksheet, sht As Worksheet
    Dim i As Long, strShtName As String
    On Error Resume Next '当代码出错时继续运行
    Set shtActive = ActiveSheet
    For i = 2 To shtActive.Cells(Rows.Count, 1).End(xlUp).Row
    '单元格A1是标题,跳过,从第2行开始遍历工作表名称
        strShtName = shtActive.Cells(i, 1).Value
        '工作表名强制转换为字符串类型
        Worksheets.Add , Sheets(Sheets.Count)
        '新建一个工作表,位置放在所有已存在工作表的后面
        ActiveSheet.Name = strShtName
    Next
    shtActive.Activate
    '重新激活原工作表
End Sub

不触发错误,直接新建一张表然后将单元格的值命名为表名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值