【问题标题】:Run Macros if Sheet Does Not Exist如果工作表不存在则运行宏
【发布时间】:2015-02-10 05:57:13
【问题描述】:

如果工作表尚不存在,我试图只运行一组宏。我有一个宏,它创建一个工作表并将两个工作表中的数据组合到其中,另一个用于格式化新工作表。由于它需要在工作簿打开时运行,我不能让它一次又一次地重新创建工作表。我一直在尝试以下方法,但它给出了错误:“未定义子或函数”:

Private Sub Workbook_Open()
If SheetExist("MyNewSheet") Then
End Sub
Else
Combine
Format
End Sub

【问题讨论】:

  • 是的,问题是“End Sub”应该是“Exit Sub”你也可以使用下面的解决方案。 If SheetExist("MyNewSheet") Then Exit Sub

标签: vba excel


【解决方案1】:

如果工作表存在,你什么都不做,所以改变你的测试。

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
【解决方案2】:

是的,问题是“End Sub”应该是“Exit Sub”你也可以使用上面/下面的解决方案。

您的固定代码是:

Private Sub Workbook_Open()

If SheetExists("MyNewSheet") Then
    Exit Sub
Else
    Combine
    Format
End If

End Sub

还有:

Public Function SheetExists(ByVal WorksheetName As String) As Boolean 

On Error Resume Next
WorksheetExists = (Sheets(WorksheetName).Name <> "")
On Error GoTo 0

End Function

【讨论】:

  • 它仍然给我一个编译错误:未定义子或函数。当前代码是: Private Sub Workbook_Open() If SheetExist("MyNewSheet") Then Exit Sub Else Combine Format End If End Sub Public Function SheetExists(ByVal WorksheetName As String) As Boolean On Error Resume Next WorksheetExists = (Sheets(WorksheetName).Name "") On Error GoTo 0 End Function
  • 如果 SheetExists 应该是我的错误
猜你喜欢
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 2022-07-17
  • 1970-01-01
相关资源
最近更新 更多