如果工作表不存在,则运行宏
问题出现的原因是原来的代码中没有对表格是否存在进行判断,所以需要修改测试条件。解决方法是使用函数来确定表格是否存在,可以参考给出的链接中的示例代码。以下是整理的文章:
当工作表存在时,你并没有执行任何操作,所以需要改变你的测试条件。
Private Sub Workbook_Open() If Not SheetExist("MyNewSheet") Then Combine Format End If End Sub Function SheetExist(sheetname As String) As Boolean SheetExist = True ' replace this with code from link below End Function
请使用这里的答案:Excel VBA If WorkSheet("wsName") Exists,其中有一些确定工作表是否存在的函数的示例代码。
以下是一个可行的解决方案:
Private Sub Workbook_Open() If Not e("MyNewSheet") Then Combine Format End If End Sub Function e(n As String) As Boolean e = False For Each ws In Worksheets If n = ws.Name Then e = True Exit Function End If Next ws End Function
问题的原因是代码中存在错误。在代码中,"SheetExist"应该是"SheetExists",因此会出现编译错误。
要解决这个问题,需要将代码中的"SheetExist"更正为"SheetExists"。修复后的代码如下:
Private Sub Workbook_Open() If SheetExists("MyNewSheet") Then Exit Sub Else Combine Format End If End Sub
另外,还需要在代码中添加一个名为"SheetExists"的公共函数。该函数用于检查工作簿中是否存在指定名称的工作表。函数代码如下:
Public Function SheetExists(ByVal WorksheetName As String) As Boolean On Error Resume Next SheetExists = (Sheets(WorksheetName).Name <> "") On Error GoTo 0 End Function
修复后的代码应该能够正常运行。