excel - 如果工作表存在,请不要添加另一个工作表
问题描述
如果工作表“数据”不存在,则代码工作正常,如果确实存在,但我收到错误“名称已存在,请尝试不同的名称”。我只是用 修复了这个On Error GoTo ErrorHandler
问题,但是问题是在代码运行并且宏触发 errorhandler msgbox 之后,它仍然会创建一个新工作表(名称为'Sheet1,2,3,...')。
片段:
Sub AddWorkSheet()
Dim wb As Workbook, shtDest As Worksheet
On Error GoTo ErrorHandler
Sheets.Add.Name = ("Data")
Set shtDest = Sheets("Data")
ErrorHandler:
MsgBox ("Something went wrong."), vbCritical
End Sub
如果工作表“数据”已经存在,我希望代码只返回消息框而不创建任何其他工作表。
解决方案
在添加工作表之前,检查它是否存在:
Function ShtExist(ShtName As String) As Boolean
On Error Resume Next
ShtExist = Len(ThisWorkbook.Sheets(ShtName).Name) > 0
On Error GoTo 0
End Function
Sub AddWorkSheet()
Dim wb As Workbook, shtDest As Worksheet
If ShtExist("Data") Then
MsgBox ("Something went wrong."), vbCritical
Else
Sheets.Add.Name = ("Data")
Set shtDest = Sheets("Data")
End If
End Sub
推荐阅读
- html - VBA从具有变量名的网站下载xlsx文件
- jpa - JPA 和 Java 11
- javascript - 如何更改不同类型的传单图层的顺序?
- angular - ag 网格滚动到新创建的项目并突出显示该行
- powershell - 如何提高 StreamReader 的性能
- regex - Ruby 正则表达式排除多个具有正面前瞻性的项目
- sql - CREATE TABLE 语句中的“pool_name”是什么意思?
- python - 处理包含双引号内的单引号或相反情况的字符串的简单方法是什么?
- string - 以像素为单位的字符串长度颤动
- azure-devops - 如何在电视上显示 DevOps 仪表板?