это мой первый пост здесь. Я пытаюсь создать макрос VBA, в котором лист дублируется несколько раз для последующего использования, и пользователь вводит имя листа с помощью поля ввода. В настоящее время я пытаюсь выяснить, как прервать процесс, если пользователь вводит имя листа, которое уже существует.
Мой текущий план состоит в том, чтобы использовать RegEx, чтобы получить введенную пользователем строку, сопоставить ее свсе листы в рабочей книге и определите, используется ли введенное имя. Вот мой текущий код:
Dim NewSheetName As String
SheetInput: NewSheetName = InputBox("Insert the new sheet name.")
'Ends procedure if user does not input anything.
If NewSheetName = "" Then
Exit Sub
End If
'Ends procedure if the sheet name is already in use.
Dim RegEx As Object
Set RegEx = CreateObject("VBScript.RegExp")
With RegEx
.Pattern = NewSheetName
End With
For i = 1 To Sheets.Count
If RegEx.Test(Sheet(i).Name) = False Then
MsgBox ("This name is already used on a different sheet. Please use a different name.")
GoTo SheetInput
End If
Next i
При попытке запустить это, я получаю сообщение «Ошибка компиляции: Sub или Function не определены» с Листом в Sheet(i).Name
выделенным. Я предполагал, что имя листа будет введено в функцию RegEx в виде строки, но, похоже, этого не происходит. Может кто-нибудь сказать мне, что с этим не так?