dynamischer Tabellenname

13/11/2010 - 13:36 von Berthold Erfkämper | Report spam
Hallo NG-Gemeinde,

heute wird es mal etwas kompliziert. Zumindest für mich die Erklàrung
des Problemes.
Also. Ich habe eine Datei mit mind. 36 Tabellenblàtten. Die Namen der
einzelnen Tabellenblàtte sind alle Unterschiedlich. Bis auf die
Ausnahme, dass als Anhang die aktuelle Jahreszahl angehangen ist.
Beispiel: Tabelle_1 = Abrg_Jan_2010, Tabelle_2 = Abrg_Feb_2010, usw.
Nun steht ein neues Jahr bevor und da die Datei auch im nàchsten Jahr
genutzt werden soll / wird, müsste ich nun jedes einzelne Tabellenblatt
umbenennen. Es gibt zwar eine Vielzahl an Codes um den
Tabellenblattnamen in eine Zelle schreiben zu können, jedoch kaum etwas
brauchbares um den Tabellennamen aus einer Zelle heraus zu benennen.
Mein Ansatz war folgender. Zelle A1 =VERKETTEN(C1;"_"; D1), C1 =
Abrg_Jan, D1 = 2011 mit folgendem Code:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
'Quelle: Message-ID: <abx9roo6fzfk$.gwmxk0omvrvl.dlg@40tude.net>
If Target.Address(0, 0) = "A1" And Target.Value <> "" Then
If Not SheetExists(Target.Value) Then
Sh.Name = Target.Value
Else
Application.Undo
End If
End If
End Sub

Public Function SheetExists(strName As String) As Boolean
On Error Resume Next
SheetExists = Not Sheets(strName) Is Nothing
End Function

Das klappt auch solange man, nachdem man in Zelle D1 das zu àndernde
Jahr eingetragen hat, in Zelle A1 klickt und den Code bestàtigt. Leider
aber nicht automatisch. Sondern halt nur wie beschrieben.
Gibt es denn keine Möglichkeit den Tabellennamen Tabelle für Tabelle
auszulesen und nur die Jahreszahl, die dann zentral in einer Zelle für
alle Tabellenblàtter gilt, zu àndern?
Leider habe ich dazu noch nichts gefunden. Aber ich hoffe da bin ich bei
Euch an der richtigen Adresse.

Vielen Dank.

Berthold.

WinXP_SP3, MOE2007
 

Lesen sie die antworten

#1 Claus Busch
13/11/2010 - 13:51 | Warnen spam
Hallo Berthold,

wenn du deine Tabellenblàtter benamen willst, dann lass doch eine
Schleife über die Blàtter laufen. Für den Fall, dass du eine neue Mappe
mit 12 Blàttern machst:
Sub Blattnamen()
Dim i As Integer
For i = 1 To 12
Sheets(i).Name = "Abrg_" & Format(DateSerial(2011, i, 1), "MMM") _
& "_" & 2011
Next
End Sub

Falls du hinter deine bisherigen 36 Blàtter 12 neue einfügen willst,
dann àndere die Schleife auf:
For i = 37 To 48


Mit freundlichen Grüssen
Claus Busch
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2

Ähnliche fragen