Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo zusammen,
darf ich Euch wieder einmal um Eure Hilfe bitten?
In einem Workbook habe ich Tabellen deren Anzahl sich laufend ändern können. Davon sind 5 Tabellen, die immer im Workbook verbleiben! Ich möchte jetzt gerne die Code-Namen per Makro so ändern können, dass die eine fortlaufende Nummerierung aller Tabellen erfolgt, egal ob sich die Anzahl der Tabellen ändert. Aber..... die 5 erwähnten Tabellen sollen immer von 1-5, also Tabelle1.....Tabelle5 als Codename erhalten....die restlichen dann als aufsteigender Codename bis Tabellexx.
Die 5 Tabellen haben die Namen "Anlagen", "Vorlage", "Konfiguration", "Auswahl_Vorgaben", "SaveHistory"
Wie könnte man die mittels vba umsetzen?
Bin wie immer dankbar für einen Vorschlag!
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
im Prinzip so:
ThisWorkbook.VBProject.VBComponents("Tabelle1").Name = "MyName1"
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo André, danke für den Tipp. Mit ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Tabelle" & i möchte ich aber die Benennung in einer Schleife automatisieren. Ewas so, aber leider komme ich da nicht weiter. Code: For i = 1 To WS_Count Sheets(i).Select wksTab = Sheets(i).Name Select Case wksTab 'Feste Vorgaben der Vorlagen-Nummerierung Case "Anlagen", "SBA Vorlage", "Konfiguration", "Auswahl_Vorgaben", "SaveHistory" ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Tabelle" & i 'Fortlaufende Nummerierung aller anderen Sheets Case Else ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Tabelle" & i End Select Next i
Das funktioniert leider nicht wie vorgestellt, so wie eingangs beschrieben.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
16.05.2020, 06:51
(Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2020, 06:51 von schauan.)
Hallöchen, was genau funktioniert nicht? es gibt auf den ersten Blick zwei Punkte - wenn Du umbenennst darf der Codenamen nicht schon vorhanden sein. Du wirst doch nicht auf Standardnamen umbenennen weil die vorher jemand auf Phantasienamen geändert hat? Das könnte höchstens klappen, wenn Du dort z.B. die englischen Bezeichnungen Sheet1 usw. ins deutsche übersetzen willst
- wenn Du den Codenamen vom Blatt wksTab ändern willst, solltest Du auch wksTab.Codenahme ändern und nicht stattdessen Worksheets(i).CodeName
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• sharky51
Registriert seit: 12.10.2014
Version(en): 365 Insider (32 Bit)
Moin! Was hat sich denn seit diesem (und anderen) Thread geändert? https://www.clever-excel-forum.de/Thread...-erzwingenFragt sich Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Guten Morgen, - das Problem ist genau das was Du in Deinem ersten Punkt beschrieben hast, es kann sein dass der Code-Name bereits vorkommt. Ich bekomme die Tabellen zugeleifert und die heissen halt nun mal mit den Code-Namen (in deutsch) Tabellex....Tabellexx usw.
Den Prosa_Namen von den Tabellenreitern kann/darf ich nicht beeinflussen....die müssen erhalten bleiben - bzgl. Deines zweiten Punktes. Ich möchte ja den Codenamen des wksTab ändern. Aber wie spreche ich dann die einzelnen Blätter an wenn Worksheets(i).CodeName nicht richtig ist?
Verwirrung
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo Ralf,
danke für Deinen Hinweis....ich verwende Dein Makro ja, aber Aufgabe hat sich insofern geändert, dass ich die Blätter mit den
Blattnamen: "Anlagen", "SBA Vorlage", "Konfiguration", "Auswahl_Vorgaben", "SaveHistory"
mit den Codenamen von Tabelle1 bis Tabelle5 benannt haben möchte.....und den Rest der Tabellenblätter, egal wie viele dazukommen oder wieder gelöscht werden dann von Tabelle6 bis Tabellxxx im Codenamen umbenannt werden müssen.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
16.05.2020, 17:22
(Dieser Beitrag wurde zuletzt bearbeitet: 16.05.2020, 17:22 von schauan.)
Hallöchen, Zitat:Ich möchte ja den Codenamen des wksTab ändern es ist m.E. besser, wenn Du bei einer Variante bleibst, also entweder wksTab verwendest oder Worksheets(i).CodeName. Wenn man mal umfangreichere Codes hat weiß man irgendwann nicht mehr, wo man ist … Deine Codenamen könntest Du erst mal auf eine temporäre Variante ändern und anschließend auf die gewünschten Nummern. Also z.B. Code: For i = 1 To WS_Count ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Libelle" & i Next 'und anschließend ThisWorkbook.VBProject.VBComponents(Worksheets("Anlagen").CodeName).Name = "Tabelle1" ThisWorkbook.VBProject.VBComponents(Worksheets("SBA Vorlage").CodeName).Name = "Tabelle2" '… 'und dann einen extra Zähler k=6 'und dann Deine ursprüngliche Schleife, aber mit kleinen Unterschieden :-) For … '... Select Case wksTab 'Nix tun Case "Anlagen", "SBA Vorlage", "Konfiguration", "Auswahl_Vorgaben", "SaveHistory" 'Fortlaufende Nummerierung aller anderen Sheets Case Else ThisWorkbook.VBProject.VBComponents(wksTab.CodeName).Name = "Tabelle" & k k=k+1 End Select '… Next i
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• sharky51
Registriert seit: 09.05.2015
Version(en): 2013, Office 365
Hallo André, herzlichen Dank für Deine Bemühungen, es funktioniert bestens mit diesem Code. Code: Sub Num_CodeNamen() WS_Count = ActiveWorkbook.Worksheets.Count For i = 1 To WS_Count ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName).Name = "Libelle" & i Next i 'und anschließend ThisWorkbook.VBProject.VBComponents(Worksheets("Anlagen").CodeName).Name = "Tabelle1" ThisWorkbook.VBProject.VBComponents(Worksheets("SBA Vorlage").CodeName).Name = "Tabelle2" ThisWorkbook.VBProject.VBComponents(Worksheets("Konfiguration").CodeName).Name = "Tabelle3" ThisWorkbook.VBProject.VBComponents(Worksheets("Auswahl_Vorgaben").CodeName).Name = "Tabelle4" ThisWorkbook.VBProject.VBComponents(Worksheets("SaveHistory").CodeName).Name = "Tabelle5" 'und dann einen extra Zähler k = 6 'und dann Deine Schleife, aber mit For j = 1 To WS_Count wksTab = Sheets(j).Name '... Select Case wksTab 'Nix tun Case "Anlagen", "SBA Vorlage", "Konfiguration", "Auswahl_Vorgaben", "SaveHistory" 'Fortlaufende Nummerierung aller anderen Sheets Case Else ThisWorkbook.VBProject.VBComponents(Worksheets(j).CodeName).Name = "Tabelle" & k k = k + 1 End Select '… Next j End Sub
Das einzig unschöne ist, dass immer, wenn eine Tabelle dazukommt, die ich mit in der Anfangssortierung haben möchte, also direkt hinter Tabelle5, muss ich den vba-Code anpacken und händisch in den Anfangsblock des Makros einfügen.
|