VBA判断Excel是否存在指定名字的表格,没有则新增

您所在的位置:网站首页 什么叫工作表命名 VBA判断Excel是否存在指定名字的表格,没有则新增

VBA判断Excel是否存在指定名字的表格,没有则新增

2024-07-17 11:54| 来源: 网络整理| 查看: 265

一、前言

本文写的是两个Excel常用的辅助VBA工具函数类,一是通过遍历Excel已有所有表名,判断是否存在指定名字的表格;二是如果不存在指定名字的表格,则新建该名字的表格,通常是后续写入数据。后面有些文章可能会直接使用这些函数,就不再重复写出来了。

注意:1.技术上没有什么难点。注意事项、写代码时思考的痕迹和说明都已经写在代码注释部分了,正文不再赘述。2.在Word等VBA环境下可能需要稍作调整才不会报错,比如有些Excel专有对象需要声明。参数里es本质是ExcelSheets对象,sh是ExcelSheet对象。表名为字符串类型,需要使用ByVal,否则函数内部如果有修改(比如转换大小写)会对传入的数据后续使用有影响。

二、判断Excel是否已存在指定名字的表格

'遍历Excel表格判断是否存在指定名称的表格。 Private Function IsExistSheetName(es As Variant, ByVal strSheetName As String) As Boolean If (Len(strSheetName) = 0) Then '注意:如不判断处理,可能导致后续代码死循环。 '处理方式是直接抛出错误,因为是程序级错误,需要程序员优化代码。 IsExistSheetName = False 'Excel自带错误异常提示说明: '在重命名工作表时输入的名称无效?请尝试以下操作: '· 确认输入的名称不多于31个字符? '· 确认名称中不包含以下字符: : \ / ? * [ 或 ]。 '· 确认名称的第一个或者最后一个字符不能是单引号? '· 确认工作表名称不为空? Err.Raise Number:=(vbObjectError + 1000), Description:="用户错误Function IsExistSheetName:Sheet名为空字符串。请检查。" Exit Function End If Dim isExist As Boolean isExist = False Dim sh As Variant For Each sh In es '注意:字符串比较前要全部转为相同大小写,否则表名有英文字符可能因为大小学不同不相等。 '或者换用不分大小写判断字符串是否相等的专用函数。 If (UCase(sh.Name) = UCase(strSheetName)) Then isExist = True Exit For End If Next IsExistSheetName = isExist End Function

三、新建指定名字的表格

'如果没有指定名字的表格,新建之。 Private Sub NewSheetIfNotExist(es As Variant, ByVal strSheetName As String) If (IsExistSheetName(es, strSheetName) = False) Then 'es.Add after:=Excel.ActiveSheet '新增在当前表格后 es.Add After:=es(es.Count) '新增表格在最后 es(es.Count).Name = strSheetName End If 'es(strSheetName).Select '切换到新建表格 '注意:如果不存在指定名字的表格,Worksheets("表名") Is Nothing直接引用会提示索引错误。 es(strSheetName).Cells.ClearContents '清空数据,和新表一样。注意,格式仍存在。 '无需返回值,后续获取表对象即可。 End Sub



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3