Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
200to204
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
200to204
200to204
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Arbeitsblattnamen eingeben

Arbeitsblattnamen eingeben
10.01.2003 14:28:55
Janine
Hallo Profis,

ich habe folgenden etwas umständlichen aber funktionierenden Makro, um mein Tabellenblatt automatisch zu benennen und im Problemfall den Namen manuell eingeben zu können.
Der einzige Fehler, der noch nicht berücksichtig ist, ist der, dass der Blattname bereits vorhanden ist.
Wie kann ich diese Abfrage mit möglichst wenig Aufwand in den bestehenden Makro einbauen?
Vielen Dank für die Hilfe,

Janine

sheetsname = Range("C5").Value
If Len(sheetsname) > 31 Then
Do
sheetsname = InputBox("Kennzahl für Blattnamen zu lang! Blattnamen bitte manuell eingeben (max 31 Zeichen): ", "Text eingeben...")
If CBool(InStr(1, sheetsname, "/")) _
Or CBool(InStr(1, sheetsname, "\")) _
Or CBool(InStr(1, sheetsname, ":")) _
Or CBool(InStr(1, sheetsname, "?")) _
Or CBool(InStr(1, sheetsname, "[")) _
Or CBool(InStr(1, sheetsname, "]")) _
Or CBool(InStr(1, sheetsname, "*")) Then
MsgBox "Sonderzeichen nicht zulässig!"
sheetsname = "Dummy Dummy Dummy Dummy Dummy Dummy Dummy"
End If
Loop While Len(sheetsname) > 31
ElseIf CBool(InStr(1, sheetsname, "/")) _
Or CBool(InStr(1, sheetsname, "\")) _
Or CBool(InStr(1, sheetsname, ":")) _
Or CBool(InStr(1, sheetsname, "?")) _
Or CBool(InStr(1, sheetsname, "[")) _
Or CBool(InStr(1, sheetsname, "]")) _
Or CBool(InStr(1, sheetsname, "*")) Then
Do
sheetsname = InputBox("Ungültiges Sonderzeichen in Blattname! Blattname bitte manuell eingeben (max 31 Zeichen): ", "Text eingeben...")
If CBool(InStr(1, sheetsname, "/")) _
Or CBool(InStr(1, sheetsname, "\")) _
Or CBool(InStr(1, sheetsname, ":")) _
Or CBool(InStr(1, sheetsname, "?")) _
Or CBool(InStr(1, sheetsname, "[")) _
Or CBool(InStr(1, sheetsname, "]")) _
Or CBool(InStr(1, sheetsname, "*")) Then
MsgBox "Sonderzeichen nicht zulässig!"
sheetsname = "Dummy Dummy Dummy Dummy Dummy Dummy Dummy"
End If
Loop While Len(sheetsname) > 31
End If
Range("C4").Value = sheetsname
Sheets("Vorlage Balkendiagramm (2)").Select
ActiveSheet.name = Worksheets("Auswertungstabelle").Range("C4").Value

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Arbeitsblattnamen eingeben
10.01.2003 15:45:18
L.Vira
Du hast Recht, dein Makro ist wirklich ganz schön umständlich:
Private Function VerbotT(Text As String) As Boolean
''Diese Funktion testet, ob ein Name verbotene Zeichen für
''Tabellennamen enthält.
Dim x
Verbot = False
For Each x In Array("?", ":", "/", "\", "*")
If InStr(Text, x) > 0 Then
MsgBox "Folgende Zeichen sind in Blattnamen nicht erlaubt:" & Chr(10) & Chr(10) & _
" * ? / \ : " & Space(70), 64, "gebe bekannt..."
Verbot = True
Exit For
End If
Next
End Function
Private Function vorhanden(BName As String) As Boolean
''Diese Funktion prüft, ob der Blattname schon vorhanden ist.
Dim Sh As Object
vorhanden = False
For Each Sh In ActiveWorkbook.Sheets
If UCase(Sh.Name) = UCase(BName) Then
MsgBox "Das Blatt " & Sh.Name & " ist schon vorhanden!" & Space(10), 64, "weise hin..."
vorhanden = True
Exit For
End If
Next
End Function
Private Function Länge(Läng As Integer) As Boolean
''Diese Funktion prüft, ob die Anzahl der zeichen zulässig ist.
Länge = False
If Läng > 31 Then
MsgBox "Es sind nur 31 Zeichen möglich!" & Chr(10) & _
"Der Name hat jedoch " & Läng & " Zeichen!" & Space(10), 64, "weise hin..."
Länge = True
End If
End Function
Anzeige
Re: Arbeitsblattnamen eingeben
10.01.2003 16:21:20
Janine
Hallo L.Vira,

danke für die Hilfe. Aber mir ist noch nicht klar, wie ich die Funktionen in Zusammenhang mit meinem Tabellennamen setze, den ich entweder aus einer festen Zelle übernehme oder bei Fehlern über die Msgbox manuell eingebe.

Gruß,

Janine

Re: Arbeitsblattnamen eingeben
10.01.2003 17:29:49
L.Vira
Ich hab jetzt leider keine Zeit mehr, ich könnte morgen ein Beispiel posten. Du weißt nicht, wie man eine Funktion verwendet, echt?
Re: Arbeitsblattnamen eingeben
10.01.2003 17:39:26
Janine
Ich bin was VBA angeht eigentlich komplett ahnungslos! Leider!

Deshalb vielen Dank!

Janine

Re: Arbeitsblattnamen eingeben
11.01.2003 12:37:58
L.Vira
''written by L.Vira for softsmith, mailto softsmith@web.de
''Zur freien Verwendung ohne jegliche Garantie!
Option Explicit
Sub Blatt_benennen()
Dim sheetname As String
''Das Makro darf nur vom Blatt "Auswertungstabelle" aus
''ausgeführt werden.
sheetname = [c5]
If [c5] = "" Then
MsgBox "Die Zelle C5 ist leer! ", 64, "weise hin..."
Exit Sub
End If
If Len([c5]) > 31 Then
MsgBox "Die Länge des Namens darf max. 31 betragen! " & Chr(10) & _
"aktuell sind es " & Len([c5]) & " Zeichen!", 64, "weise hin..."
Exit Sub
End If
If Verbot(sheetname) Then Exit Sub
If ShName(sheetname) Then Exit Sub
[c4] = sheetname
''Ich hoffe mal, du weißt, dass der Code nur einmal ausgeführt
''darf, weil es nach dem ersten Durchlauf das Blatt
''"Vorlage Balkendiagramm (2)" nicht mehr gibt!
Sheets("Vorlage Balkendiagramm (2)").Select
ActiveSheet.Name = Sheets("Auswertungstabelle").[c4]
End Sub
Function Verbot(Text As String) As Boolean
Dim x As Variant
Verbot = False
For Each x In Array("""", "?", ":", "|", "<", ">", "/", "\", "*")
If InStr(Text, x) > 0 Then
Verbot = True
MsgBox "Folgende Zeichen sind in Dateinamen nicht erlaubt: " & Chr(10) & Chr(10) & _
" * | > < '' ? / \ : ", 64, "gebe bekannt..."
Verbot = True
Exit For
End If
Next
End Function
Private Function ShName(BName As String)
Dim Sh As Object
ShName = False
For Each Sh In ActiveWorkbook.Sheets
If UCase(Sh.Name) = UCase(BName) Then
MsgBox "Das Blatt " & Sh.Name & " ist schon vorhanden!" & Space(10), 64, "weise hin..."
ShName = True
Exit For
End If
Next
End Function
Anzeige
Re: Arbeitsblattnamen eingeben
14.01.2003 09:54:50
Janine
Hallo L.Vira,

allerherzlichsten Dank für Deine Hilfe. Ich habe es leider erst heute geschafft, mich wieder mit dem Makro zu beschäftigen.

Es klappt auch alles wunderbar, allerdings scheitere ich (wieder mal) daran, den Makro so anzupassen, dass der Makro nicht verlassen wird, wenn Fehler im Blattnamen auftauchen, sondern ich über eine Msgbox aufgefordert werde, den Namen manuell einzugeben, der dann ebenfalls auf mögliche Fehler überprüft wird.
Hast Du da noch einen Tip für mich?

Lieben Gruß,

die dankbare Janine

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige