Sheet - Copy - Name - Loop - Examine!

A worksheet is copied and placed against the end. The name is entered over an input box. Different is examined: Name already available? Name valid? Name more largely 31 indications? In the second code the name in a loop is queried until a correct input was made. The files at the end of the article are Excelfiles of the version 2003 and 2007. The following code belonged in "Module1".


Ein Tabellenblatt wird kopiert und ans Ende gestellt. Der Name wird über eine Inputbox eingegeben. Verschiedenes wird geprüft: Name schon vorhanden? Name gültig? Name größer 31 Zeichen? Im zweiten Code wird der Name in einer Schleife abgefragt, bis eine richtige Eingabe gemacht wurde. Die Dateien am Ende des Artikels sind Exceldateien der Version 2003 und 2007. Der folgende Code gehört in "Modul1".


Option Explicit
Public Sub Test()
Dim strName As String
strName = InputBox("Name enter", "Input", "Tab22")
If strName = "" Then Exit Sub
If Not strName Like _
"*[\,/,<,>,|,*,?,:,;,+,#, ,,ä,ö,ü,ß,!]*" Then
If SheetExist(strName) = True Then
MsgBox "Tabellenblatt vorhanden!"
Else
If Not Len(strName) > 31 Then
ThisWorkbook.Worksheets("Main").Copy _
After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = strName
Else
MsgBox "Sheet name > 31 indications!"
End If
End If
Else
MsgBox "Invalid name!"
End If
End Sub
Private Function SheetExist(strTMP As String) As Boolean
Dim wksSheet As Worksheet
For Each wksSheet In ThisWorkbook.Worksheets
If wksSheet.Name = strTMP Then SheetExist = True: Exit For
Next
End Function

The following code belonged In "Module2"

Der folgende Code gehört In "Modul2"

Option Explicit
Public Sub Test_1()
Dim blnTMP As Boolean
Dim strName As String
Do
strName = InputBox("Name enter", "Input", "Tab22")
If strName = "" Then Exit Sub
If Not strName Like _
"*[\,/,<,>,|,*,?,:,;,+,#, ,,ä,ö,ü,ß,!]*" Then
If SheetExist(strName) = True Then
MsgBox "Tabellenblatt vorhanden!"
Else
If Not Len(strName) > 31 Then
ThisWorkbook.Worksheets("Main").Copy _
After:=ThisWorkbook.Sheets(Sheets.Count)
ActiveSheet.Name = strName
blnTMP = True
Else
MsgBox "Sheet name > 31 indications!"
End If
End If
Else
MsgBox "Invalid name!"
End If
Loop Until blnTMP = True
End Sub
Private Function SheetExist(strTMP As String) As Boolean
Dim wksSheet As Worksheet
For Each wksSheet In ThisWorkbook.Worksheets
If wksSheet.Name = strTMP Then SheetExist = True: Exit For
Next
End Function


Sample 2003

Sample 2007

Kommentare

Beliebte Posts aus diesem Blog

Formeln - auch Array - per VBA eintragen...

Alle Dateien eines Ordners - Optional mit Unterordner

Excel -> Word in Textmarken (Bookmarks)...