Option Explicit
Function SheetExists(ByVal SheetName As String) As Boolean
On Error Resume Next
SheetExists = Not Sheets(SheetName) Is Nothing
End Function
Function isValidSheetName(ByVal SheetName As String) As Boolean
If (Len(SheetName) > 31) Or (Len(SheetName) = 0) Then Exit Function
With CreateObject("VBScript.RegExp")
.Pattern = "[\\:\][/?*]"
isValidSheetName = Not .Test(SheetName)
End With
End Function
Sub CreateSheet(ByVal arrSheets As Variant)
Dim tmpArr, Item
On Error GoTo ErrHandler
tmpArr = arrSheets
If Not IsArray(tmpArr) Then tmpArr = Array(tmpArr)
For Each Item In tmpArr
If isValidSheetName(CStr(Item)) Then
If Not (SheetExists(CStr(Item))) Then
Sheets.Add(After:=Sheets(Sheets.Count)).Name = CStr(Item)
End If
End If
Next
Exit Sub
ErrHandler: MsgBox Err.Description
End Sub
Sub Main()
CreateSheet Sheet1.Range("A1:A200")
End Sub