使用输入框添加新工作表,检查现有工作表名称和无效工作表名称

Adi*_*oho 2 excel vba

我是 VBA 新手,但我需要用它做点什么。我想制作输入框来添加具有特定名称的新工作表。不知何故,我可以在论坛上进行一番搜索后成功。这是我想做的步骤,但我无法完全完成。

  • 创建询问新工作表名称的输入框(已完成)。
  • 当工作表的名称已经可用时,会出现一个消息框,表明它无法创建新工作表,但当发生相反情况时,则会创建一个新工作表(也已完成)。
  • 最后是我想在输入框为空时出现一个新的消息框并要求输入不同的名称(我不能这样做)。

这是我到目前为止使用的代码

Public Sub CariSheet()
Dim SheetName As String
Dim shExists As Boolean

Do

SheetName = InputBox("Write the name of sheet", "Add Sheet")
If NamaSheet <> "" Then

shExists = SheetExists(SheetName)
If Not shExists Then

Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = SheetName
MsgBox "The sheet " & (SheetName) & " is successfuly made", , "Result"
Else

MsgBox "The name is already exist, please enter a new name", vbOKOnly + vbInformation, "Name"

End If
End If
Loop Until Not shExists Or SheetName = ""
End Sub

Private Function SheetExists(ByVal SheetName As String, _
Optional ByVal wb As Workbook)

If wb Is Nothing Then Set wb = ActiveWorkbook
On Error Resume Next
SheetExists = Not wb.Worksheets(SheetName) Is Nothing

End Function
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,提前感谢您的关注。啊,抱歉我的英语不好。

Par*_*h J 5

检查此代码是否对您有帮助:

刚刚为您添加了Else 部分Main If 条件,您检查If Sheetname is not Blank

另外,如果您想在输入框为空白的情况下退出子例程,您也可以取消注释我的“ Exit Sub”行。

Public Sub CariSheet()
Dim SheetName As String
Dim shExists As Boolean

Do

SheetName = InputBox("Write the name of sheet", "Add Sheet")
If SheetName <> "" Then
shExists = SheetExists(SheetName)
    If Not shExists Then    
        Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = SheetName
        MsgBox "The sheet " & (SheetName) & " is successfuly made", , "Result"
    Else
        MsgBox "The name is already exist, please enter a new name", vbOKOnly + vbInformation, "Name"
    End If
Else
    MsgBox "Please enter a sheet name.", vbOKOnly + vbInformation, "Warning"
'Exit Sub
End If
Loop Until Not shExists Or SheetName = ""
End Sub
Run Code Online (Sandbox Code Playgroud)