如果名称不存在循环,如何添加工作表

嗨我想创build一个循环,看看是否input匹配现有的工作表的名称。

如果是这样,那么我希望子重新启动(所以用户被要求一个新的状态)。

如果input没有匹配,那么我想要添加一个新的工作表。 我已经完成了大部分工作,但是当它创build一个新的工作表时,它会回滚并添加空白工作表。

请让我知道你的想法!!

Sub partA() Dim State As Worksheet Dim StateName As String Dim NameExist As Boolean Dim HQ As String Dim BO As Integer Dim Sales As Integer On Error Resume Next 'Asking for sheet name and then adding one if there is no match StateName = InputBox("Please Enter a State Name", "State Name") For Each State In ActiveWorkbook.Worksheets If UCase(StateName) = UCase(State.Name) Then NameExist = True MsgBox "Worksheet " & StateName & " Exists" ElseIf NameExist = False Then Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = StateName End If Next State End Sub 

只需将其包装在DoLoop然后在find唯一名称后退出:

 Sub partA() Dim State As Worksheet Dim StateName As String Dim NameExist As Boolean Dim HQ As String Dim BO As Integer Dim Sales As Integer 'Asking for sheet name and then adding one if there is no match Do StateName = InputBox("Please Enter a State Name", "State Name") NameExist = False For Each State In ActiveWorkbook.Worksheets If UCase(StateName) = UCase(State.Name) Then NameExist = True MsgBox "Worksheet " & StateName & " Exists" Exit For End If Next State Loop Until NameExist = False Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = StateName End Sub 

更好地直接testing现有的纸张而不是循环遍布每张纸张。

我也删除了多余的variables,并改变了你的InputBox(强制一个string)。

 Sub ReCut() Dim State As Worksheet Dim StateName As String StateName = Application.InputBox("Case Sensitive", "Please Enter a State Name", , , , , , 2) On Error Resume Next Set State = Sheets(StateName) On Error GoTo 0 If State Is Nothing Then Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = StateName Else MsgBox "Worksheet " & StateName & " Exists" End If End Sub 

也许这个Sub和这个函数可以帮助你。

 Function Find_Sheet(Name_Sheet As String) As Boolean For i = 1 To Worksheets.Count If Worksheets(i).Name = Name_Sheet Then Find_Sheet = True Exit Function End If Next Find_Sheet = False End Function Sub MySub() Dim Name_Sheet As String Name_Sheet = Range("a1").Value Var = Find_Sheet(Name_Sheet) If Var = True Then MsgBox "It Sheet Exists" Else Sheets.Add After:=Sheets(Sheets.Count) ActiveSheet.Name = Name_Sheet MsgBox "Sheet " & Name_Sheet & " was created" End If End Sub