Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
948to952
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
948to952
948to952
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Tabellenblätter per Zelleneingabe umbenennen

Tabellenblätter per Zelleneingabe umbenennen
12.02.2008 19:20:00
Ehrentraut
Hallo,
ich habe folgendes Problem:
Ich möchte im Tabellenblatt 1 in den Zellen A1-A25 die tabellenblattnamen eingeben. Je nach Eingabe soll en die Tabellenblätter angelegt werden und der Name aus den Zellen als Tabellenname übernommen werden (z.B. Zelle A1 - 123 , A2 - 124, A3 - 12). Dabei sollen Änderungen in den Zellen A1-A25 die Tabellenblattnamen ebenfalls ändern (Tabellenblatt1 soll somit zur Eingabe der folgenden Tabellenblätter genutzt werden).
So weit das Problem, nun kann ich nur um Eure Mithilfe hoffen.
Schon mal Danke im Voraus!
Gruß
Dirk

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter per Zelleneingabe umbenennen
12.02.2008 19:50:00
Tino
Hallo,
ist es möglich mit einer Hilfsspalte zu arbeiten,
in der die aktuelle Position der Tabelle hinterlegt werden kann?
Bsp:
A1 - 123 B1- 2 (Tabelle befindet sich an zweiter stelle in der Datei)
Gruß
Tino

AW: Tabellenblätter per Zelleneingabe umbenennen
12.02.2008 19:51:40
Ulf
Hallo Dirk
Habe mal was gebastelt

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Intersect(Target, Range("A1:A25")) Is Nothing Then Exit Sub
With Sheets(1)
For i = 1 To 25
If Sheets.Count  "" Then
If Application.WorksheetFunction.CountIf(.Range("A1:A25"), .Cells(i, 1)) = 1 Then
Sheets(i + 1).Name = Sheets(1).Cells(i, 1)
Else
Sheets(1).Cells(i, 1) = ""
MsgBox "Namen dürfen nicht doppelt vergeben werden", vbInformation, "Information"
End If
Else
Sheets(i + 1).Name = "leer" & i
End If
Next i
End With
End Sub


laas mal hören ob du das so meinst
mfg Ulf

Anzeige
AW: Tabellenblätter per Zelleneingabe umbenennen
12.02.2008 20:50:00
Tino
Hallo,
hier ist ein Beispiel von mir.
Tabelle1 muss zurzeit an erster stelle bleiben.
Es besteht die Möglichkeit Tabellen zu verschieben einzufügen und umzubenennen
Eingabe in Tabelle1 A1 bis A25, B1 bis B25 ist Hilfsspalte.
https://www.herber.de/bbs/user/49867.xls
Gruß
Tino

AW: Tabellenblätter per Zelleneingabe umbenennen
12.02.2008 20:46:07
Erich
Hallo Dirk,
probier das mal (gehört in den Code der Tabelle1):

Option Explicit
Dim strAlt As String
Private Sub Worksheet_Activate()
Cells(1, 2).Select
strAlt = ""
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target(1), Range("A1:A25")) Is Nothing Then Exit Sub
strAlt = Target(1)
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ii As Integer
If Intersect(Target(1), Range("A1:A25")) Is Nothing Then Exit Sub
If strAlt = Target(1) Then Exit Sub
If IsEmpty(Target(1)) Then
If Not bFrei(strAlt) Then Worksheets(strAlt).Delete
strAlt = ""
ElseIf strAlt = "" Then
If WorksheetFunction.CountIf(Range("A1:A25"), Target(1)) > 1 Then
MsgBox "Der Name " & Target(1) & " ist schon vergeben."
Application.Undo
Exit Sub
ElseIf bFrei(Target(1)) Then
ii = WorksheetFunction.CountA(Range("A1:A" & Target(1).Row))
Worksheets.Add(after:=Sheets(ii)).Name = Target(1)
strAlt = Target(1)
End If
Else
If WorksheetFunction.CountIf(Range("A1:A25"), Target(1)) > 1 Then
MsgBox "Der Name " & Target(1) & " ist schon vergeben."
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
Exit Sub
ElseIf bFrei(Target(1)) Then
If bFrei(strAlt) Then
MsgBox "Blatt " & strAlt & " gibt es noch nicht," & vbLf _
& "Blatt " & Target(1) & " wird neu angelegt."
Worksheets.Add(after:=Sheets(Sheets.Count)).Name = Target(1)
Else
Worksheets(strAlt).Name = Target(1)
End If
strAlt = Target(1)
End If
End If
Application.EnableEvents = False
Me.Select
Application.EnableEvents = True
End Sub
Private Function bFrei(strN As String) As Boolean
Dim ws As Worksheet
bFrei = True
For Each ws In Sheets
If ws.Name = strN Then
bFrei = False
Exit For
End If
Next ws
End Function

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige