Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel-Tabellen umbenennen mit VBA

Excel-Tabellen umbenennen mit VBA
29.04.2019 12:05:41
Mel
Hallo zusammen,
ich möchte, dass in 8 untereinander stehenden Zellen Begriffe eingegeben werden können vom Benutzer. Diese sollten dann in einem ausgeblendeten Bereich als Überschriften für jeweils eine Tabelle kopiert werden - soweit so gut.
Diese Tabellen & deren Inhalte müssen als Dropdown-Menü herhalten, daher muss Tabellenüberschrift und der Tabellenname übereinstimmen - und hier ist mein Problem: Per Makro sollen die Werte aus den Zellen als Überschriften reinkopiert werden aber wie kann ich jetzt dafür sorgen, dass auch der Tabellenname genauso geändert wird?
Komme durch googlen und probieren einfach nicht weiter.
Vielen Dank im Voraus und viele Grüße.
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-Tabellen umbenennen mit VBA
29.04.2019 12:27:45
Matthias
Hallo
Ich geh mal davon aus das Du intelligente Tabellen meinst!?
Wenn Du nun schreibst "soweit so gut," hast Du also die Überschriften bereits eingetragen.
Dann kannst Du doch auch den Namen des ListObjects gleich mit ändern.
Gruß Matthias
AW: Excel-Tabellen umbenennen mit VBA
29.04.2019 14:24:31
Mel
Hallo Matthias,
danke für deine schnelle Antwort.
Ja ich habe es hinbekommen die Bezeichnungen per VBA als Überschriften der Tabellen einzufügen.
Allerdings sagt mit "intelligente Tabellen" nichts und von ListObjects habe ich gelesen aber nicht verstanden wie ich das umsetzen kann damit den Tabellennamen auch zu ändern gemäß der Überschrift.
Gruß Mel
Anzeige
AW: Excel-Tabellen umbenennen mit VBA
29.04.2019 14:29:39
Mel
Ergänzend muss ich noch dazu sagen,
dass die 8 Tabellen sich nebeneinander in einem Arbeitsblatt befinden.
Wenn die Bezeichnungen mehrmals geändert werden, dass passt auch der Befehl
"ActiveSheet.ListObjects("Tabelle1").Name = ..." bei der nächsten Änderung nicht mehr...
ListObjects(Index).Name = ...
29.04.2019 14:48:53
Matthias
Hi
dann musst Du den Index benutzen wobei ich nicht weiß ob die 8 Tabellen die einzigen
ListObjects sind. Muss man also evtl anpassen.
ActiveSheet.ListObjects(1).Name = ..." ' das erste Objekt
ActiveSheet.ListObjects(2).Name = ..." 'das zweite Objekt usw.
also nach diesem Schema ...
In eine Schleife gepackt als ein Skript(hier nur als Beipiel!)
For x = 1 to 8
ActiveSheet.ListObjects(x).Name ="NeuerName" & x
Next
Du solltest aber sicherstellen das es den neuen Namen noch nicht gibt.
Gruß Matthias
Anzeige
AW: ListObjects(Index).Name = ...
29.04.2019 15:31:27
Mel
Hi,
bezüglich den genannten Codes (ActiveSheet.ListObjects(1).Name...), gebe ich damit aber meinen 8 Tabellen feste Namen d.h. wenn einige Tabellen dann den neuen Namen bekommen und dann aber wieder geändert werden sollen, können diese nicht mehr angesprochen werden.
Ich muss mich nochmal anders ausdrücken..
Ich habe eine Liste (G47 bis G55), in der der Benutzer seine Gruppen eintragen soll
Gruppe
FBG
Kabel
Mechanik
...
Anzeige
AW: ListObjects(Index).Name = ...
29.04.2019 17:38:18
Matthias
Hallo
Zitat
wenn einige Tabellen dann den neuen Namen bekommen und dann aber wieder geändert werden sollen, können diese nicht mehr angesprochen werden.
Wieso nicht?
Der Index ändert sich doch nicht!
Gruß Matthias
was meinst Du denn mit Tabellennamen?
29.04.2019 14:41:37
Matthias
Hallo
Meinst Du einen definierten Namen für einen Bereich oder den Registerblattnamen?
Du kannst doch mit Range("DeinBereich").Name= "xyz" den Namen umbenennen.
Zitat:
Ja ich habe es hinbekommen die Bezeichnungen per VBA als Überschriften der Tabellen einzufügen.
Zeig doch mal den Code, evtl. wird man da schlauer daraus.
Gruß Matthias
Anzeige
AW: was meinst Du denn mit Tabellennamen?
29.04.2019 15:33:24
Mel
Diese Begriffe sollen in den Zeilen B3 bis I3 als eingefügt werden (nebeneinander über Inahlte einfügen: transponieren). Unter B3, C3, D3, E3 etc. befinden sich jeweils weitere Begriffe, die hier unbedeutend sind, aber die die Tabelle ausmachen. Also Beispielsweise die erstellte Tabelle in B3 sieht wie folgt aus:
B3 FBG (=Tabellenüberschrift aus G48)
B4 Schritt 1
B5 Schritt 2
B6 Schritt 3
So sieht jede Tabelle aus nur mit anderen Übreschriften - diese sollen wie folgt zugeordnet werden. Der Begriff auf G48 muss in B3, G49 in C3, G50 in D3 usw.
Das ist per Makro aus kein Problem. Aber die Tabelle in Spalte B hat momentan die Überschrift "FBG" (B3) und den Tabellennamen "FBG", beides stammt aus G48. Wenn jetzt in G48 "Optik" eingetragen wird, soll in B3 als Überschrift Optik eingetragen werden UND der Tabellennamen auch von FBG in "Optik" geändert werden und genau das stellt mein Problem dar..
wie kann ich die einzelnen Tabellen als Variablen ansprechen und ihr Tabellenname dann gemäß den Bezeichnungen in Spalte G ändern?
Anzeige
AW: was meinst Du denn mit Tabellennamen?
29.04.2019 15:38:27
Mel
Mein Code:
Problem: er funktioniert nicht und zudem spricht er die Tabellen als FBG, Kabel etc. an und nicht als Variable..
Sub Go()
' Makro benennt Tabellenüberschriften in Info um gemäß der eingegebenen Arbeitspakete. Die  _
Tabellennamen werden ebenfalls entsprechend ergänzt.
'Liste mit Arbeitspaket-Namen kopieren
Range("G48:G55").Select
Selection.Copy
'Bezeichnungen nebeneinander einfügen (B3:I3):
Range("B3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
ActiveCell.Select
'Variablen definieren:
Dim AP1 As String
AP1 = Range("G48").Value
Dim AP2 As String
AP2 = Range("G49").Value
Dim AP3 As String
AP3 = Range("G50").Value
Dim AP4 As String
AP4 = Range("G51").Value
Dim AP5 As String
AP5 = Range("G52").Value
Dim AP6 As String
AP6 = Range("G53").Value
Dim AP7 As String
AP7 = Range("G54").Value
Dim AP8 As String
AP8 = Range("G55").Value
'Überschriften und im 2. Schritt Tabellennamen:
Range("B3").Value = AP1
ActiveSheet.ListObjects("FBG").Name = AP1
Range("C3").Value = AP2
ActiveSheet.ListObjects("Firmware").Name = AP2
Range("D3").Value = AP3
ActiveSheet.ListObjects("Kabel").Name = AP3
Range("E3").Value = AP4
ActiveSheet.ListObjects("Mechanik").Name = AP4
Range("G3").Value = AP6
ActiveSheet.ListObjects("Filter").Name = AP6
Range("H3").Value = AP7
ActiveSheet.ListObjects("Verkleidung").Name = AP7
Range("I3").Value = AP8
ActiveSheet.ListObjects("Kaufteil").Name = AP8
Range("F3").Value = AP5
ActiveSheet.ListObjects("Optik").Name = AP5
End Sub

Anzeige
AW: was meinst Du denn mit Tabellennamen?
29.04.2019 16:03:54
Daniel
Hallo Mel,
ich stoße ja sonst nicht so in dieses Horn, aber das Ding hier als VBA - gut zu verkaufen, ist schon ein starkes Stück!
Mir ist auch nach Verfolgen der bisherigen Beiträge nicht klar, was wann wo passieren soll, was davon bisher klappt und was nicht. Vielleicht solltest du mal deine Mappe hier hochladen, damit man wenigstens versuchen kann, deine Pläne nachzuvollziehen?
Gruß
Daniel
Anzeige
AW: was meinst Du denn mit Tabellennamen?
02.05.2019 11:09:34
Mel
Hallo,
ich bräuchte lediglich einen VBS Code um bei meinen 8 Tabellen die Tabellenüberschriften zu ändern und zwar in diejenigen Begriffe die der Benutzer in einer separate Tabelle untereinander eingibt.
Dieser Schritt stellt nicht das Problem dar, sondern die "Tabellennamen" den Überschriften anzupassen (unter Tabellentools - Entwurf - Tabellenname).
Danke
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Excel-Tabellen umbenennen mit VBA


Schritt-für-Schritt-Anleitung

Um die Tabellenüberschriften und die Tabellennamen in Excel mithilfe von VBA zu ändern, folge diesen Schritten:

  1. Öffne den VBA-Editor:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden Code ein:

    Sub TabellenUmbenennen()
       Dim i As Integer
       Dim AP As Variant
       AP = Range("G48:G55").Value ' Werte aus der Liste einlesen
    
       ' Schleife über die Tabellen
       For i = 1 To UBound(AP, 1)
           ' Überschrift einfügen
           Cells(3, i + 1).Value = AP(i, 1) ' B3 bis I3
           ' Tabellennamen ändern
           ActiveSheet.ListObjects(i).Name = AP(i, 1) ' Tabellennamen anpassen
       Next i
    End Sub
    • Dieser Code nimmt die Einträge aus dem Bereich G48 bis G55 und fügt sie als Überschriften in die Zellen B3 bis I3 ein. Gleichzeitig wird der Tabellennamen geändert.
  4. Führe das Makro aus:

    • Klicke im VBA-Editor auf Run oder drücke F5, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Stelle sicher, dass die Anzahl der ListObjects mit der Anzahl der Zellen in G48 bis G55 übereinstimmt.
  • Fehler: "Der Name ist ungültig"

    • Überprüfe, ob der neue Tabellennamen bereits existiert. Jeder Tabellennamen muss einzigartig sein.
  • Problem: Tabellenüberschriften erscheinen nicht richtig

    • Vergewissere dich, dass die Zellen in G48 bis G55 korrekt ausgefüllt sind und die Formatierung stimmt.

Alternative Methoden

Falls Du nicht mit VBA arbeiten möchtest, kannst Du auch die folgende Methode verwenden:

  1. Manuelles Umbenennen:

    • Klicke mit der rechten Maustaste auf die Tabelle und wähle Umbenennen.
    • Ändere den Namen manuell.
  2. Excel-Funktionen verwenden:

    • Du kannst auch die Funktion =G48 in Zelle B3 eingeben und diese nach rechts ziehen, um die Überschriften zu füllen. Dies ist jedoch nicht für das Umbenennen der Tabellennamen geeignet.

Praktische Beispiele

  • Beispiel für das Umbenennen der Spalten:

    Sub SpalteUmbenennen()
      ActiveSheet.ListObjects("Tabelle1").ListColumns(1).Name = "NeuerName"
    End Sub
    • Diese Zeile ändert den Namen der ersten Spalte in "Tabelle1".
  • Beispiel für das Transponieren und Umbenennen:

    Range("G48:G55").Copy
    Range("B3").PasteSpecial Paste:=xlPasteAll, Transpose:=True
    • Dies transponiert die Liste in die Zellen B3 bis I3.

Tipps für Profis

  • Variablen für Tabellennamen verwenden:

    • Es ist effizienter, Variablen für Tabellennamen in Deinem Makro zu verwenden, anstatt sie direkt einzugeben. Dadurch ist Dein Code flexibler.
  • Fehlerbehandlung in VBA:

    • Implementiere On Error Resume Next in Deinem Code, um Laufzeitfehler zu vermeiden, die auftreten können, wenn ein Tabellenname bereits besteht.
  • Dokumentation:

    • Kommentiere jeden Abschnitt Deines Codes, um die Lesbarkeit zu verbessern und anderen Nutzern zu helfen, Deine Logik nachzuvollziehen.

FAQ: Häufige Fragen

1. Wie kann ich eine Excel-Tabelle umbenennen? Um eine Excel-Tabelle zu benennen, kannst Du das Kontextmenü verwenden oder ein VBA-Makro wie oben beschrieben.

2. Was sind ListObjects in Excel? ListObjects sind die Objekte, die Excel für Tabellen verwendet. Sie erleichtern die Verwaltung und Bearbeitung von Tabellendaten.

3. Wie kann ich mehrere Spalten in Excel umbenennen? Du kannst eine Schleife in VBA verwenden, um die Namen mehrerer Spalten gleichzeitig zu ändern, indem Du die ListColumns-Eigenschaft verwendest.

4. Ist es möglich, Tabellennamen automatisch zu ändern, wenn sich die Überschrift ändert? Ja, durch das Erstellen eines VBA-Makros kannst Du festlegen, dass der Tabellenname automatisch geändert wird, wenn die Überschrift aktualisiert wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige