Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel vba Tabellen Codenamen umbenennen
#1
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!
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top
#2
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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • sharky51
Antwortento top
#3
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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top
#4
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 Smile
  • 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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • sharky51
Antwortento top
#5
Moin!
Was hat sich denn seit diesem (und anderen) Thread geändert?
https://www.clever-excel-forum.de/Thread...-erzwingen

Fragt 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 Benutzer sagt Danke an RPP63 für diesen Beitrag:
  • sharky51
Antwortento top
#6
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 Huh
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top
#7
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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top
#8
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-2016)
[-] Folgende(r) 1 Benutzer sagt Danke an schauan für diesen Beitrag:
  • sharky51
Antwortento top
#9
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.
Mit freundlichen Grüßen / Best regards
                          //
----------o00o---°(_)°---o00o----------------------

Erich
Antwortento top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste