excel - 工作表名称已存在,如何处理错误并删除 Excel 中的默认工作表?
问题描述
使用 sheet1 的名称创建工作表效果很好。但是,如果我再次错误地运行代码,则会出现运行时 1004 错误,因为新创建的工作表名称已经存在。这很好,但是如何处理此错误并防止 Excel 创建一个具有随机名称的默认工作表?
我希望 Excel 到 MsgBox 我有一个重复,然后它应该什么都不做。我知道有类似的线程,但他们没有回答我的问题。谢谢。
Private Sub CreateSheet()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets.Add(After:= _
Worksheets("Sheet1"))
Application.DisplayAlerts = False
ws.Name = Sheets("Sheet1").Range("N1")
On Error Resume Next
If (Worksheets("ws.Name").Name <> "") Then
MsgBox ("name already exists, please delete")
Else
ws.Visible = xlSheetVisible
ThisWorkbook.Sheets("Sheet1").Range("A:AB").Copy
ThisWorkbook.Sheets(ws.Name).Range("A1").PasteSpecial Paste:=xlPasteValues
End If
End Sub
解决方案
在运行工作表创建代码之前,您可以创建一个自定义函数并在代码中对其进行测试,例如...
Public Function SheetExists(WkBkName As String, ShtName As String) As Boolean
Dim sht As Worksheet
On Error Resume Next
Set sht = Application.Workbooks(WkBkName).Worksheets(ShtName)
On Error GoTo 0
If sht Is Nothing Then
SheetExists = False
Else
SheetExists = True
End If
End Function
然后你可以在下面的代码中使用这个 UDF...
Sub Test()
If SheetExists(ThisWorkbook.Name, "Sheet2") Then
MsgBox "Sheet Exists!"
Else
MsgBox "Sheet Doesn't Exist!"
End If
End Sub
推荐阅读
- reactjs - 在 React 中将不同的参数带到同一页面时,数据未加载
- port - 服务器 minecraft 无法转发端口(tcp 25565)
- python-3.x - 考虑使用 items() 进行迭代
- javascript - 如何将数组数组从 javascript 传递到汇编脚本
- nlp - 预训练的 roberta 关系提取属性错误
- r - 使用动态创建的变量来选择 mutate 中的列
- python - 如何从 30 个 csv 文件制作直方图以绘制直方图,然后使用高斯函数和标准差绘制直方图?
- vscode-extensions - 使用 VSCODE.dev 时的 JSON 格式(vscode 的 web 版本)
- java - 安卓工作室中的脚本引擎
- excel - VBA Excel - 通过 ListView 控件循环