Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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
Inhaltsverzeichnis

Tabellennamen

Tabellennamen
12.02.2016 08:44:49
Bernd
Hallo zusammen,
ich würde gerne per VBA die Tabellennamen innnerhalb einer Excel-Datei ändern.
Dabei soll nur ein Teil des Inhaltes der Zelle B2 als Tabellennamen dienen. Also sowas in der Form wie: Tabellennamen = links(B2;6).
Wie kann ich das in VBA so lösen, dass dies einheitlich automatisch für alle Tabellenblätter innerhalb einer Datei so gemacht wird?
Gruß,
Bernd

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellennamen
12.02.2016 08:54:23
Michael
Morgen Bernd!
So:
Sub a()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
Ws.Name = Left(Ws.Range("B2"), 6)
Next Ws
End Sub
LG
Michael

AW: Tabellennamen
12.02.2016 09:15:29
Bernd
Hallo Michael,
Klappt! Nur kommt bei mir immer eine häßliche Fehlemeldung:
Laufzeitfehler "1004". Die Methode "Name" für das Objekt "_Worksheet" ist fehlgeschlagen.
Was hat das zu bedeuten bzw. kann man das "abfangen"?
Gruß,
Bernd

AW: Tabellennamen
12.02.2016 09:21:48
Michael
Hallo Bernd!
Kommen in Deinen B2-Zellen evtl. auch Zeichen vor, die für Blattnamen nicht erlaubt sind? Und wenn in B2 nichts steht hast Du natürlich auch ein Problem. Test mal lieber so:
Sub a()
Dim Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Range("B2") = "" Then
Ws.Name = Ws.Name
Else: Ws.Name = NamenSauber(Left(Ws.Range("B2"), 6))
End If
Next Ws
End Sub
Function NamenSauber(BlattName As String) As String
If Len(BlattName) > 31 Then BlattName = Left(BlattName, 31)
BlattName = Replace(BlattName, ":", "")
BlattName = Replace(BlattName, "\", "")
BlattName = Replace(BlattName, "/", "")
BlattName = Replace(BlattName, "?", "")
BlattName = Replace(BlattName, "*", "")
BlattName = Replace(BlattName, "[", "")
BlattName = Replace(BlattName, "]", "")
NamenSauber = BlattName
End Function
Ansonsten könnte ich den Fehler nicht nachvollziehen.
LG
Michael

Anzeige
Nochmal ergänzt...
12.02.2016 09:56:23
Michael
Hallo Bernd!
Mein voriger Code nochmal ergänzt, falls sich Werte in B2 auf den Blättern wiederholen - dann kommt's natürlich auch zu einem Fehler, weil dann 2 Blätter uU den gleichen Namen erhalten würden; das geht nicht.
Jetzt bleibt der urpsüngliche Blattname bestehen, wenn B2 leer ist. Wenn in B2 unerlaubte Zeichen vorkommen, werden die einfach entfernt. Wenn ein Blattname aus B2 wiederholt vorkommt, bleibt bei allen außer dem ersten entsprechenden Blatt der ursprüngliche Blattname erhalten. Falls Du hier eine andere Kennzeichnung willst, gib Bescheid!
Sub a()
Dim Ws As Worksheet
Dim BlName As String
For Each Ws In ThisWorkbook.Worksheets
If Ws.Range("B2") = "" Then
Ws.Name = Ws.Name
Else:
BlName = NamenSauber(Left(Ws.Range("B2"), 6))
If Not BlattExistiert(BlName) Then Ws.Name = BlName
End If
Next Ws
End Sub
Function BlattExistiert(BlattName As String) As Boolean
Dim Ws As Worksheet
BlattExistiert = False
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name = BlattName Then
BlattExistiert = True
Exit Function
End If
Next
End Function
Function NamenSauber(BlattName As String) As String
If Len(BlattName) > 31 Then BlattName = Left(BlattName, 31)
BlattName = Replace(BlattName, ":", "")
BlattName = Replace(BlattName, "\", "")
BlattName = Replace(BlattName, "/", "")
BlattName = Replace(BlattName, "?", "")
BlattName = Replace(BlattName, "*", "")
BlattName = Replace(BlattName, "[", "")
BlattName = Replace(BlattName, "]", "")
NamenSauber = BlattName
End Function
LG
Michael

Anzeige
AW: Tabellennamen
12.02.2016 09:27:18
Daniel
Hi
dieser Fehler kann folgende Ursachen haben:
a) es existiert bereits anderes Tabellenblatt mit diesem Namen
b) die Zelle enthält ein Sonderzeichen, welches als Tabellenblattname nicht erlaubt ist :/\?*
c) der Zelltext ist länger als 31 Zeichen
wobei Fall c) bei dir natürlich nicht eintreten kann, da du die Länge auf 6 Zeichen beschränkst.
zunächst einmal solltest du prüfen, was die Ursache ist.
falls a) zutriff, solltest du dir überlegen, was dann passieren soll.
Gruß Daniel

AW: Tabellennamen
12.02.2016 10:12:19
Bernd
Hallo zusammen,
Fall a) trifft wohl zu, da "Tabelle1" enthalten war und dort keine Werte enthalten sind!
Danke für Eure Beiträge / Hilfe!
Bernd

Anzeige
Siehe meine letzte Ergänzung z Fehlerbehandl. owT
12.02.2016 10:47:41
Michael

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige