Vba 如何创建创建excel工作表的if条件

Vba 如何创建创建excel工作表的if条件,vba,excel,Vba,Excel,我正在尝试创建VBE代码以创建新的excel工作表 要创建一个新的工作表,我正在使用下面的代码,并且工作得非常好: Dim ws As Worksheet With ThisWorkbook Set ws = .Sheets.Add(After:=.Sheets(.Sheets.count)) ws.Name = "Savings" End With 但现在我需要将此代码更改为IF条件,以处理此逻辑:如果有一个名为“Savings”的工作

我正在尝试创建VBE代码以创建新的excel工作表

要创建一个新的工作表,我正在使用下面的代码,并且工作得非常好:

    Dim ws As Worksheet
    With ThisWorkbook
        Set ws = .Sheets.Add(After:=.Sheets(.Sheets.count))
        ws.Name = "Savings"
    End With
但现在我需要将此代码更改为IF条件,以处理此逻辑:如果有一个名为“Savings”的工作表,请删除它并创建一个名为“Savings”的新工作表,否则只需创建工作表“Savings”

创建工作表“Savings”后,我希望另存为新文件,并希望在“另存为”对话框的“名称”字段中建议一个名称(如Savings)


谢谢你们一直帮助我这应该可以做到:

Dim ws As Worksheet
With ThisWorkbook
    For Each ws In .Worksheets
        If ws.Name = "Savings" Then 'If Savings exists
            Application.DisplayAlerts = False 'Disable warnings
            ws.Delete 'Delete Worksheet
            Application.DisplayAlerts = True 'Enable warnings
            Exit For
        End If
    Next ws

    'Add Savings Worksheet
    Set ws = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
    ws.Name = "Savings"
End With

With Application.FileDialog(msoFileDialogSaveAs) 'SaveAs Dialog
    .InitialFileName = "Savings" 'Suggested Name
    .AllowMultiSelect = False

    .Show
    If .SelectedItems.Count > 0 Then
        ThisWorkbook.SaveAs .SelectedItems(1) 'Save File
    End If
End With

这会将工作表设置为变量,并测试它是否存在。如果它这样做了,它将在使用代码创建新工作表之前删除它。这种方法的好处是不需要循环来实现它

Dim ws as worksheet

On Error Resume Next
Set ws = ThisWorkbook.Sheets("Savings")
On Error GoTo 0

If not ws is nothing then
    With Application
        ' Disable Alerts
        .DisplayAlerts = False
        ' Delete sheet
        ws.delete
        ' Re-enable Alerts
        .DisplayAlerts = True
    End With
End If

With ThisWorkbook
    Set ws = .Sheets.Add(After:=.Sheets(.Sheets.count))
    ws.Name = "Savings"
End With

像这样的东西应该适合你:

Sub tgr()

    Dim wsSav As Worksheet
    Dim sSavePath As String
    Dim sExt As String
    Dim lFileFormat As Long

    With ThisWorkbook
        On Error Resume Next    'Prevent error if worksheet doesn't exist
        Set wsSav = .Sheets("Savings")
        On Error GoTo 0         'Remove error condition

        If Not wsSav Is Nothing Then
            Application.DisplayAlerts = False   'Suppress "Are you sure?" worksheet delete prompt
            wsSav.Delete
            Application.DisplayAlerts = True
        End If
        Set wsSav = .Sheets.Add(After:=.Sheets(.Sheets.Count))
        wsSav.Name = "Savings"

        sSavePath = Application.GetSaveAsFilename("Savings")
        If sSavePath = "False" Then Exit Sub    'user pressed cancel

        sExt = Mid(sSavePath, InStrRev(sSavePath, ".") + 1)
        If Len(sExt) = 0 Then
            sExt = "xlsm"
            sSavePath = sSavePath & sExt
        End If

        Select Case LCase(sExt)
            Case "xlsm":    lFileFormat = 52
            Case "xlsx":    lFileFormat = 51
            Case "xls":     lFileFormat = 56
            Case Else:
                MsgBox "Invalid Excel file extension """ & sExt & """" & Chr(10) & _
                       "Unable to save file."
                Exit Sub
        End Select

        Application.DisplayAlerts = False   'Suppress overwrite prompt (if any)
        .SaveAs sSavePath, lFileFormat
        Application.DisplayAlerts = True
    End With

End Sub

很好,但是文章的第二部分呢?几乎成功了,Saveas窗口完美地弹出了,但是当我点击Save按钮时,这个错误发生了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。代码行ThisWorkbook.SaveAs.SelectedItems(1)上的错误号为1004。您知道如何插入。显示保存文件时将打开此新文件的命令吗?在您的代码中,当我运行宏时,它会保存,但新文件保持关闭状态,因此我必须转到保存文件的文件夹并打开它。而且我只想保存这个特定的工作表(在这个excel文件中我有很多工作表)@LucasSenne???另存为保存该文件,然后活动文件成为该保存文件。应该不需要关闭并重新打开它。@LucasSenne至于只保存特定的工作表,您需要执行一个
工作表。移动
将其放入自己的工作簿中,然后保存该工作簿(使用Active工作簿)。如果你需要帮助做这件事,首先,这将是一个新问题,而不是你的帮助。第二,我将创建一个新的问题帖子,向您展示我想说的内容。