得到“下标超出范围”的错误,我不知道什么是错的。 (我对vba是新鲜的)

这是我的代码:

Private Sub New_User_Create_Click() CreateUsername_L = LCase(Create_User_Text.Text) For Each ws In Worksheets If (Worksheets(CreateUsername_L).Name <> "") Then MsgBox "Username is already taken! Try again!" Create_User_Text.Text = "" NewUser.Hide Exit For Else Dim work As Worksheet With ThisWorkbook Set worksheetname = .Sheets.Add(After:=Worksheets(Worksheets.Count)) worksheetname.Name = CreateUsername_L On Error Resume Next Create_User_Text.Text = "" NewUser.Hide [B1].Value = (UserName + "'s Personal Profile") Exit For End With End If Next ws End Sub 

如果你可以帮助我,这将是非常值得赞赏的(也错误只发生在条件不满足时,例如没有名称与“CreateUsername_L”相同的工作表。当条件满足时,“用户名是已经采取…“只有当这种错误发生时不满足条件才显示出来)

您不能像testing中那样testing工作表名称的存在。 “下标超出范围”错误正在寻找该工作表名称,如果它找不到它,那么你得到你的错误。 你可以编写一个函数来testing一个名字的存在,并用它来代替。 这是我的:

 Public Function doesSheetNameExist(inputName As String) As Boolean Dim ws As Worksheet On Error GoTo ErrorCatch Set ws = Thisworkbook.Worksheets(inputName) 'if no error here then worksheet exists doesSheetNameExist= True CloseFunction: Exit Function ErrorCatch: doesSheetNameExist= False Resume CloseFunction End Function 

这处理函数内的错误。 或者,您可以遍历每个工作表并testing名称。

你会然后更换你的线

 If (Worksheets(CreateUsername_L).Name <> "") Then 

 If doesSheetNameExist(CreateUsername_L) Then