Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblattname aus Zelle

Tabellenblattname aus Zelle
14.01.2014 08:52:40
mf@dietaikonauten.com
Liebe Foren Gemeinde,
ich habe folgende kleine Aufgabe für mich zu lösen:
Ich möchte gerne den Tabellenblattnamen aus einer Zelle übernehmen.
Genauer gesagt mache ich gerade folgendes:
B1 = "Maximilan Mustermann"
AD1 =LINKS(B1;1)&RECHTS(LINKS(B1;FINDEN(" ";B1)+1);1)
Ergebnis in AD1 = MM
Diese Initialien möchte ich jeweils ins Tabellenblatt automatisch übernehmen. Ich war natürlich schon auf der Suche und habe folgenden Code gefunden und eingebaut:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("AD1") Then
ActiveSheet.Name = Range("AD1").Text
End If
End Sub
Leider passiert genau...NIX :)
Hier ein Bild wie das aktuell bei mir aussieht:
https://dl.dropboxusercontent.com/u/32990230/test.jpg
Danke vorab.
Zwischenfragen: Kann was kaputt gehen wenn ausversehen zwei Leute die gleichen Initialien haben oder hängt er dann auch einfach eine (2) hinten dran?
Sagen wir:
Maximilian Mustermann ---> Tabellenblattname MM
Markus Musterfrau ---> Tabellenblattname MM (2)

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblattname aus Zelle
14.01.2014 09:51:49
Luschi
Hallo mf@dietaikonauten.com,
Formeln lösen keine Ereignisroutinen aus. das klappt nur bei manueller/Vba Wert-Änderung.
Deshalb so:

If Target = Range("B1") Then
ActiveSheet.Name = Range("AD1").Text
End If
Gruß von Luschi
aus klein-Paris

Zwischenfrage
14.01.2014 10:03:53
Rudi
Hallo,
Kann was kaputt gehen
Nein. Aber der Code läuft in einen Fehler.
oder hängt er dann auch einfach eine (2) hinten dran?
die (2) wird nur beim kopieren eines Blatts angehängt. Nicht beim Umbenennen.
Gruß
Rudi

AW: Zwischenfrage
14.01.2014 11:40:34
mf@dietaikonauten.com
Vielen Dank für eure schnellen Antworten!
Ich habe jetzt folgendes stehen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("B1") Then
ActiveSheet.Name = Range("AD1").Text
End If
End Sub

Nun kommt ein "Laufzeitenfehler". Hab´s wohl noch nicht ganz verstanden. Könnt ihr mir bitte nochmals auf die Sprünge helfen?
LG Maik

Anzeige
AW: Zwischenfrage
14.01.2014 11:45:31
Rudi
Hallo,
If Target = Range("B1") Then
das fragt ab, ob der Inhalt der geänderten Zelle mit B1 übereinstimmt. Willst du das? vermutlich nicht.
Wenn du abfragen willst, ob B1 geändert wurde, dann so:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
ActiveSheet.Name = Range("AD1").Text
End If
End Sub

Gruß
Rudi

AW: Zwischenfrage
14.01.2014 11:49:54
mf@dietaikonauten.com
Nochmals Danke Rudi,
habe gerade festgestellt das mein Code doch funktioniert hat.
Aber die Frage ist sicher berechtigt weil ich es noch nicht ganz verstanden habe.
in AD1 baue ich die Initialien einer Person .... Rudi Maintaire (Zelle B1) .... RD (Zelle AD1)
Nur diesen AD1 Zellwert möchte ich als Tabellenblattnamen übergeben. Es funktioniert bei mir mit dem Weg über B1. Ich tue mich aber etwas schwer zu verstehen wieso ich dafür eben dieses B1 benötige.
Ich freue mich über Aufklärung eines mal wieder Unwissenden :D

Anzeige
AW: Zwischenfrage
14.01.2014 11:53:04
Uwe
Um evtl. Fehler abzufangen, z.B. AD1 ist leer.
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fehler
If Target.Address = "$B$1" Then
ActiveSheet.Name = Range("AD1").Text
End If
Fehler:
MsgBox "Fehler"
End Sub
Gruß Uwe

AW: Zwischenfrage
14.01.2014 12:01:00
mf@dietaikonauten.com
Ok das baue ich auch ein. Ich habe gerade folgendes ausprobiert:
Martin Schulze erzeugt den Tabellenblattnamen: MS
Jetzt habe ich das Blatt kopiert und einfach mal als Namen "Melissa Siebert" eingegeben: Auch da kommt MS raus.
Das Script gibt den Fehler...Tabellenblattname 2 mal vorhanden...anderen Namen...Jetzt könnte ich ja sagen...das ich die Initialien verlängere zb aus "Martin Schulze" wird "MaS" und aus "Melissa Siebert" wird "MeS". OK GEHT - Aber will ich eigentlich nicht :)
Könnte es denn so aussehen, dass das Script sieht "MS ist bereits vorhanden" und mir dann automatisch eine 2 hinten dran hängt? Dann würde es "MS" und "MS2" geben.
Möchte eure Zeit aber auch nicht über Gebühr beanspruchen hier.
LG Maik

Anzeige
AW: Zwischenfrage
14.01.2014 12:22:07
Rudi
Hallo,
und wenn dann noch Martina Seidel kommt? Dann ist MS2 auch belegt.
Und wer soll noch auf Anhieb erkennen, welches Blatt zu wem gehört?
Warum benennst du die Blätter nicht einfach mit dem vollen Namen?
Gruß
Rudi

AW: Zwischenfrage
14.01.2014 12:27:30
mf@dietaikonauten.com
Hi Rudi, weil ich zu viele Mitarbeiter habe :D das wird einfach elendig lang. Ich wollte eigentlich einfach unsere E-Mail Kürzel nehmen.
Wobei ich da eben auch das Problem bekomme das Initialien mehrfach vergeben waren. Daher "hoffte" ich einfach das es so funktioniert wie beim Kopieren eines Blattes...da schreibt excel ja einfach nur in Klammern 2 oder 3 oder was auch immer.
LG Maik

Anzeige
Blatt benennen
14.01.2014 12:51:48
Rudi
Hall,
Private Sub Worksheet_Change(ByVal Target As Range)
Dim iCounter As Integer, wks As Worksheet
If Target.Address = "$B$1" Then
If Len(Range("AD1")) = 2 Then
For Each wks In Worksheets
If Left(wks.Name, 2) = Range("AD1") Then iCounter = iCounter + 1
Next
If iCounter > 0 Then
ActiveSheet.Name = Range("AD1").Text & "(" & iCounter & ")"
Else
ActiveSheet.Name = Range("AD1").Text
End If
End If
End If
End Sub

Gruß
Rudi

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige