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

automatisches Benennen von Tabellenblättern

automatisches Benennen von Tabellenblättern
26.02.2008 10:22:00
Tabellenblättern
Hallo zusammen,
ich arbeite mit einem Makro, dass die Bezeichnung der Tabellenblätter 2 - 119 automatisch mit Bezeichnungen (Namen) versieht, die in Tabelle 1 in Spalte A 1:118 stehen.
Die Namen in Tab. 1 werden aus einer anderen Datei (Name Bsp.: "Sport") bezogen.
Ändere ich nun die Namen in Datei Sport, dann ändern sich auch die Namen in Tab. 1 Spalte A.
Soweit gut. Jedoch reagieren die einzelnen Tabellenblätter (2-119) nicht automatisch auf die Änderung, sondern erst wenn ich in Tabelle 1 Spalte A in die Formel der jeweiligen Zelle (in der ein neuer Name steht) klicke und mit Return wieder rausgehe. Warum geht es nicht, ohne extra in die Formel zu klicken?
Bzw.: können die Bezeichnungen der Tabellen 2-119 auch direkt auf die andere Datei "Sport" reagieren?
Hier das Makro mit dem ich arbeite:

Private Sub Worksheet_Change(ByVal Target As Range)
Const b = "A1:A118" 'überwachter Bereich
Dim z As Range, rng As Range, n As String
Set rng = Intersect(Target, Range(b))
If Not rng Is Nothing Then
On Error Resume Next
For Each z In rng
If z = "" Then
n = "Tabelle" & z.Row + 1
Else
n = z.Value
End If
Sheets(z.Row + 1).Name = n
If Err.Number > 0 Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
MsgBox Err.Description, vbExclamation, "Fehler " & Err.Number
Exit For
End If
Next z
End If
End Sub


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

Betreff
Datum
Anwender
Anzeige
AW: automatisches Benennen von Tabellenblättern
26.02.2008 10:39:00
Tabellenblättern
Hi Alex,
das Worksheet_Change Ereignis wird durch Änderungen in Formeln nicht ausgelöst. Versuche es mit dem Calculate Ereignis.


AW: automatisches Benennen von Tabellenblättern
26.02.2008 10:55:49
Tabellenblättern
Hi Beverly,
hab jetzt folgendes geändert:

Private Sub Worksheet_Calculate(ByVal Target As Range)
Const b = "A1:A118" 'überwachter Bereich
Dim z As Range, rng As Range, n As String
Set rng = Intersect(Target, Range(b))
If Not rng Is Nothing Then
On Error Resume Next
For Each z In rng
If z = "" Then
n = "Tabelle" & z.Row + 1
Else
n = z.Value
End If
Sheets(z.Row + 1).Name = n
If Err.Number > 0 Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
MsgBox Err.Description, vbExclamation, "Fehler " & Err.Number
Exit For
End If
Next z
End If
End Sub


also nur "Change" in "Calculate".
Kommt Fehlermeldung:
"Deklaration der Prozedur entspricht nicht der Beschreibung eines Ereignisses oder einer Prozedur mit dem selben Namen".
Hab ich noch etwas nicht bedacht?
P.S.: kenne mich in VBA noch nich so dolle aus.

Anzeige
AW: automatisches Benennen von Tabellenblättern
26.02.2008 11:28:00
Tabellenblättern
Hi Alex,
dann gibt es offensichtlich schon eine Prozedur diesen Namens in deiner Tabelle. Da musst du beide zu einer vereinigen.


AW: automatisches Benennen von Tabellenblättern
26.02.2008 11:36:00
Tabellenblättern
Also in dieser Arbeitsmappe / in diesem VBA-Projekt ist das das einzige Makro mit "Private Sub Worksheet_Change(ByVal Target As Range)".
Hiiiilfe!!

AW: automatisches Benennen von Tabellenblättern
26.02.2008 12:00:00
Tabellenblättern
ich nochma,
es gibt noch eine Prozedur mit diesem Namen, aber in einer anderen Arbeitsmappe / anderes VBA-Projekt.
Da es eine andere Arbeitsmappe ist, kann das doch nicht sein, oder?
Wenn doch, kann ich dann eines nicht umbenennen?

Anzeige
AW: automatisches Benennen von Tabellenblättern
26.02.2008 14:02:26
Tabellenblättern
Hi,
die Prozedur muss so lauten:
Private Sub Worksheet_Calculate()
also weg mit den Argumenten.
mfg Fred

AW: automatisches Benennen von Tabellenblättern
26.02.2008 14:40:20
Tabellenblättern
hi,
wenn ich das so eingebe:

Private Sub Worksheet_Calculate()
Const b = "A1:A118" 'überwachter Bereich
Dim z As Range, rng As Range, n As String
Set rng = Intersect(Target, Range(b))
If Not rng Is Nothing Then
On Error Resume Next
For Each z In rng
If z = "" Then
n = "Tabelle" & z.Row + 1
Else
n = z.Value
End If
Sheets(z.Row + 1).Name = n
If Err.Number > 0 Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
MsgBox Err.Description, vbExclamation, "Fehler " & Err.Number
Exit For
End If
Next z
End If
End Sub


kommt:
Laufzeitfehler 424:
Objekt erforderlich

Anzeige
AW: automatisches Benennen von Tabellenblättern
26.02.2008 14:09:18
Tabellenblättern
Hallo Alex,
du stößt da gerade an ein grundsätzliches Problem.
Dein erster Ansatz
Private Sub Worksheet_Change(ByVal Target As Range)
Gibt dir die Adresse wieder in der du händisch was geändert hast, was bei dir nicht geht da die Änderungen über eine Formel kommen.
Das
Private Sub Worksheet_Calculate()
Ereignis taucht zwar für dein Problem, gibt aber keinen Target zurück, sondern springt nur an wenn irgendwo im Blatt was berechnet wird ohne zurückzugeben wo es passiert ist, darum die Fehlermeldung weil das ByVal Target As Range nicht in die Klammern darf.
Was bedeutet du müßtest bei jedem calculate Ereigniss alle Blätter neu benennen, da du nicht weis ob da was gändert wurde. Das kostet aber viel Performance.
Du solltest also nochmal grundsätzlich darüber nachdenken was und warum du da diese umbennen machst und ob du in der Form brauchst.
Gruß Heiko
PS: Rückmeldung wäre nett !

Anzeige
AW: automatisches Benennen von Tabellenblättern
26.02.2008 14:44:59
Tabellenblättern
hallo heiko,
aber mit einer händischen änderung gehts, oder?
nur dann muss ich irgendwie an eine andere arbeitsmappe verweisen. da ändere ich die namen händisch.
geht das?
wg. rückmeldung:
bin heut abend wieder da
alex

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige