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

Tabellenblätter umbenennen mit VBA

Tabellenblätter umbenennen mit VBA
26.02.2008 19:19:00
alex
Hallo Leute,
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 so 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. Habe heute schon mal recherchiert und rausbekommen, dass das Makro nur auf direkte Eingaben (per Hand) und nicht durch eine Änderung per Formel funzt.
Nun meine Frage:
Kann ich denn mit diesem Makro in dieser Arbeitsmappe auf die Datei "Sport" verweisen?
Da trage ich die Namen nämlich "händisch" ein.
Und wie muss ich das dann schreiben?
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


19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter umbenennen mit VBA
27.02.2008 08:49:00
Armin
Hallo Alex,
wenn Du in einer Mappe etwas änderst wird sich das in einer (einfach so rumliegenden) nicht auswirken können, wie auch. Also Du brauchst immer irgend einen Event. Also Du musst ja in der Mappe die 118 Sheets erhalten soll für irgend etwas brauchen sprich öffnen. Also wäre das dann der Event. Die Tabelle die die Namen der Tabellenblätter enthält kannst Du ja über links "füttern". Immer dann wenn Du das Tabellenblat aktivierst aktuallisiert die Mappe sich selbst. Und als "Zuckerl" falls eine Mappe nicht vorhanden ist wird die automatisch angelegt. Probiers mal aus und lass hören ob es das ist was Du brauchst.
Diesen Code in das Tabellenblatt mit den Namen- alten Code entfernen-

Sub Worksheet_Activate()
Const b = "A1:A118" 'überwachter Bereich
Dim z As Range, n As String
On Error Resume Next
For Each z In Range(b)
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
If Sheets.Count 


Gruß Armin

Anzeige
AW: Tabellenblätter umbenennen mit VBA
27.02.2008 09:57:00
alex
Hi Armin,
danke für deine Antwort!
Scheint beim 1. ausprobieren zu funktionieren.
Aber ich hab ein Problem mit der Namensgleichheit meiner Makros.
Die Makros sind in 2 verschiedenen Arbeitsmappen.
Von der einen erhält die andere nur die Namen per Formel, sonst nichts.
Diese Bezeichnung lässt ihn crashen.
Private Sub Worksheet_Change(ByVal Target As Range
Trotz 2 verschiedener Arbeitsmappen?
gruß alex

AW: Tabellenblätter umbenennen mit VBA
27.02.2008 11:57:55
alex
ich nochmal Armin,
hab ja schon gesagt, dass es geht, nur muss ich erst ein Tabellenblatt von 2-119 anwählen und dann wieder Tabelle 1 anwählen, dann aktualisiert es sich.
Kann man das nicht noch mit einfügen?
Gruß
alex

Anzeige
AW: Tabellenblätter umbenennen mit VBA
27.02.2008 12:28:27
Armin
Hallo Alex,
tut mir leid ich verstehe noch nicht wo Dein Problem liegt. Sei so gut und erkläre es mir noch einmal.
Gruß Armin

AW: Tabellenblätter umbenennen mit VBA
27.02.2008 12:47:00
alex
Hi Armin,
sorry aber ich blicks zur Zeit selber nich mehr ganz.
Ich hab im Grunde 2 Probleme:
Problem 1:
erkläre mir (als absolut VBA-Blöden) bitte mal folgendes:
Die Makros sind in 2 verschiedenen Arbeitsmappen.
In 2 verschiedenen Arbeitsmappen ist jeweils ein Makro mit dieser Bezeichnung:
Private Sub Worksheet_Change(ByVal Target As Range
Das einzige was diese 2 Mappen verbindet ist das die in einer Spalte reingeschriebenen Namen
per Formel an die andere Mappe gehen. Sonst nichts.
Diese gleiche Bezeichnung lässt ihn crashen.
Trotz 2 verschiedener Arbeitsmappen?
Problem 2:
Dein Makro funktioniert in sofern, dass die einzelnen Tabellenblätter 2-119 auf die Änderung der Namen (per Formel aus der anderen Mappe) reagieren; aber erst dann, wenn ich ein Tabellenblatt von 2-119 anwähle und dann wieder Tabelle 1 anwähle. Dann aktualisiert er. (Fast geschafft) Wenn du das noch automatisieren könntest (das anwählen von z.B Tab 2 und danach anwählen von Tab.1) ist es geschafft.
das macht mich echt fertig
gruß
alex

Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 07:47:00
alex
Moin Armin,
ich kann hier auf Arbeit deinen Link nicht öffnen. Der Webmaster hat geblockt.
Gibts einen anderen Weg mir das zukommen zu lassen?
Grüsse von
alex

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 08:01:00
Armin
Hallo Alex,
hast Du eine E-Mailadresse die Anhänge (xls) passieren lässt?
Gruß Armin

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 08:22:40
alex
Armin,
bin auf Arbeit, weiß nicht ob das geht.
Bin bei der Polizei und haben einen sehr wachsamen Webmaster in Berlin.:-)
Könnten es aber mal ausprobieren.
Oder kannst du das Makro aus der Datei kopieren und in diese Forummails reinhauen?
Wie wollen wir vorgehen?
grüsse von
alex

Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 08:45:00
Armin
Hallo Alex,
versuchen wir es mal zu Fuß.
Dieser Code muss in die Codeseite der Tabelle die die Namen den Tabellenblätter enthält.

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
Cancel = True
If Target.Column = 1 And Target.Row 


Dann Modul erzeugen und den Code hineinkopieren:


Public Sub Mappe_XYZ(ByVal Rz As Long)
Dim W As Worksheet
Set W = ActiveWorkbook.Worksheets(Rz + 1)
W.Name = ActiveCell.Value
W.Activate
Set W = Nothing
End Sub


Wichtig! Die Tabelle mit den Namen muss bei der 1 Zeile anfangen ansonsten muss (Rz+1) entsprechen korregiert werden ( z.Bsp. ab Zeile 5 dann Rz -3).
Der Aufruf der Seiten erfolgt mit der rechten Maustaste.
Viel Erfolg.
Gruß Armin

Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 09:01:00
alex
Hallo Armin,
wieder: Fast!
Wenn ein Name ( der ja von einer anderen Arbeitsmappe stammt ) dazukommt und ich rechte Maus drücke, dann gehts.
Lösche ich den Namen in der anderen AM raus und klicke dann in meiner Zieldatei rechts, dann kommt Laufzeitfehler. hmmm.
Noch ne Frage: auf den Rechtsklick kann man nicht verzichten oder?
Bin auch zufrieden wenn nich!
grüsse von
alex

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 09:42:08
Armin
Hallo Alex,
1. Der rechte Maus click ist der Event den Du zwingend brauchst! Oder Du musst das Konsept ändern!
2. Das löschen eines Namen muss zwingend dazu führen das die noch vorhandene Tabelle einen default Namen bekommt den die Tabelle ist ja noch da. Da zeigt sich auch die schwäche Deines Projektes. Denn eigentlich müsste ja die Tabelle auch gelöscht werden( könnte man zur Not auch noch bewerkstelligen). Aber man kann sich helfen wenn man sie in Tabelle1... umbenennt. Übrigens das Runtime Error ist erst nach der 2. Aktion erschienen, weil es dann schon eine Tabelle mit Namen "0" gab. Oder steht in Deiner Namensliste dann nicht "0"? Wenn ich Dich richtig verstanden habe hast Du die Namenstabelle mit einem anderen Sheet verlinkt und das bringt zwingend eine 0 wenn die Zelle leer ist.
Also jetzt die Korrektur damit der Runtime Error weg ist.
Im Modul den Code austauschen.

Public Sub Mappe_XYZ(ByVal Rz As Long)
Dim W As Worksheet, SN As String
Set W = ActiveWorkbook.Worksheets(Rz + 1)
If ActiveCell.Value  0 Then
W.Name = ActiveCell.Value
Else
W.Name = "Tabelle" & CStr(Rz)
End If
W.Activate
Set W = Nothing
End Sub


Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 10:23:00
ALEX
hi Armin,
die Formel lautet wenn 0 dann leer, ich krieg keine 0.
soll ich das ändern?
Mist, habs grad ausprobiert, der klatscht mir neue Tabellenblätter hinter meine letzte Tabelle119.
Was is das denn?!
Schick dir nochmal mein Ding:
in Tabelle1 (Tabelle1) stehen die Makros:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
Cancel = True
If Target.Column = 1 And Target.Row 


Sub Worksheet_Activate()
Const b = "A1:A118" 'überwachter Bereich
Dim z As Range, n As String
On Error Resume Next
For Each z In Range(b)
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
If Sheets.Count Sheets.Add After:=Sheets(Sheets.Count)
Sheets(z.Row + 1).Name = n
End If
End If
Next z
End Sub


'das nur die beschrifteten Tabellenblätter gedruckt werden:
Sub ausdruckleb()
For Each wks In Worksheets
If Not wks.Name Like "Tabelle*" Then wks.PrintOut 1, 2
Next wks
End Sub


in "Diese Arbeitsmappe":
leer
in Module
Modul1:


Public Sub Mappe_XYZ(ByVal Rz As Long)
Dim W As Worksheet, SN As String
Set W = ActiveWorkbook.Worksheets(Rz + 1)
If ActiveCell.Value  0 Then
W.Name = ActiveCell.Value
Else
W.Name = "Tabelle" & CStr(Rz)
End If
W.Activate
Set W = Nothing
End Sub


will dich nich nerven aber kannst du noch mal gucken?
grüsse
alex

Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 10:30:30
Armin
Hi Alex,
Du musst natürlich die Prozedur "Sub Worksheet_Activate()" löschen oder in "Sub Worksheet____Activate()"
umbenennen!Die brauchst Du ja nicht mehr!!!!
Gruß Armin

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 11:17:00
alex
Hi Armin,
danke! jetzt ja!
Letzte Frage:
Wenn ich die Namen in Tab1 alphab. Sortiere und dann rechtsklick, dann hängt er sich daran auf dass er Tabellenblätter nicht doppelt benennen kann.
Die müssten irgendwie kurz auf Tabelle2, 3, 4, ... zurückbenannt werden und dann die Namen neu zuweisen. Oder is die Idee völliger Schmarrn?!
grüsse vom dankbaren
alex

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 12:21:31
Armin
Hi Alex, ja das geht schon aber das löst das Problem nicht! Wenn Du wieder sortierst ist die Zuorndung wieder putsch.
In jeder Mappe haben die Sheets eine laufende Nummer und einen Namen eines muss reverenzieren. Bei Dir die Nummer da Du den Namen änderst. Wenn Du jedoch die Sortierung ausführst änderst Du die Reihenfolge also die Nummer. Beides geht nicht entweder das eine oder das andere. Ich hätte das sowie "Abstrakter" gemacht. Dadurch das Du die Seite über einen Mausclick aktivierst ist es ja eigentlich garnicht nötig die Sheets umzubenennen. Dann schreibt man einfach in die Spalte B die Reverenz (B1,B2,B3...... so heißen zum Beispiel die Tabellen) und die dazugehörige Seite wird aktiviert (Natürlich muss der Code dann noch gerinfügig geändert werden - siehe weiter unten).
Mit den "stillgelegetem" Makro kannst Du auch 118 "neue Sheet" erzeugen (umbenennen und auf Sub Namen z.Bsp. Sub Alles_Neu () den Cursor und F5-Taste; Die Namenstabelle sollte aktiv sein!).

Public Sub Tab_Aufrufen_oder_Anlegen(ByVal Rz As Long)
Dim W As Worksheet, SN As String
If ActiveCell.Value  "" Then
If ActiveCell.Offset(0, 1).Value = "" Then
If Sheets.Count 


Damit könnte man die von mir vorgeschlagene Variante realisieren.
Übrigens noch eleganter wäre ein Button und eine Auswahlliste die dann zu den entsprechen Sheet verzweigt. Aber das wir dann für das Forum zu komplex.
Gruß Armin

Anzeige
AW: Tabellenblätter umbenennen mit VBA
28.02.2008 13:13:52
alex
Hilfe!!
ich bin blutiger anfänger.
Hab nicht ganz verstanden.
Muss das Makro in Tabelle1 rein, oder ins Modul?
Läuft das dann so, dass in Tabelle1 Spalte A nach wie vor meine Namen von der anderen Datei kommen, und in Spalte B soll ich reverenzieren (was ist das, wie muss ich tun?)
Was ist ein stillgelegtes Makro?
Können wir step by step?
gr. alex

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 13:36:05
Armin
Hi Alex, so können wir das nicht machen melde Dich mit einer Mailadresse ich schicke Dir ein Mustersheet.
Gruß Armin

AW: Tabellenblätter umbenennen mit VBA
28.02.2008 14:07:00
alex
Das wär gut,
am besten nach Hause (wg meinem Webmaster auf Arbeit)
danredalex@web.de
Danke nochmal für deine Geduld mit mir
alex
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige