Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA - Interner Blattname

VBA - Interner Blattname
15.07.2015 12:18:39
PeTeR
Hi VBA-Freaks,
dass ich Tabellenblätter in VBA über den "internen" Namen ansprechen kann ist mir klar. z. B. Tabelle3.Delete Dies gelingt mir aber nicht mit einer "fremden" Arbeitsmappe z. B. Workbooks("BlaBla.xlsx").Tabelle3.Delete
Bitte um Auflösung meines Denkfehlers!! D A N K E !!!
PeTeR

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Interner Blattname
15.07.2015 13:03:02
Daniel
Hi
wenn du den Internen Namen (auch Codename) des Blattes verwendest, dann greifst du direkt auf die Objektstruktur der Mappe zu.
Das funktioniert so ohne weiteres nur innerhalb der eigenen Mappe.
Bei Zugriff auf andere Mappen musst du den Indexnamen oder die Indexnummer verwenden:
Workbooks("Blabla.xlsx").Sheets("Tabelle3").delete
Workbooks("Blabla.xlsx").Sheets(3).Delete
wenn du direkt auf die Objektstrukur der anderen Datei zugreifen willst, musst du beide Dateien über EXTRAS - VERWEISE "miteinander bekannt machen"
wie das genau funktioniert, kann ich dir aber nicht sagen.
Gruß Daniel

Anzeige
Das liegt daran, dass du die StandardNamen ...
15.07.2015 14:00:41
Luc:-?
…verwendest, PeTeR;
diese sind für alle Mappen gleich und damit nicht eindeutig. Folglich kann auch das von Daniel vorgeschlagene „Bekanntmachen“ der Mappen per Verweis (VBE-Menü Extras) nicht fktionieren, der VBE wird das wegen mehrfachen Auftretens des Namens ablehnen.
Du musst die internen Namen (CodeName) ändern, was man sehr einfach in den Objekt­Eigenschaften manuell tun kann, zB DieseArbeitsmappexyzAMsonstwas und die Blätter dann so Tabelle1xyzTab1 usw. Dann klappt auch ein Verweis.
Dass Daniel das nicht weiß, wird daran liegen, dass er meine BTe, in denen ich das bereits früher erwähnt hatte, ignoriert hat, und selber nicht auf die naheliegende Idee gekommen ist, das zu tun (die VBE-Meldung ist schließlich ziemlich eindeutig!)…
Die CodeNames sind übrigens solitär und können keinem anderen Objekt als Eigenschaft zugeordnet wdn, also auch nicht der CodeName eines Worksheet-Objekts seinem Parent-Objekt Workbook und umgekehrt!
Gruß, Luc :-?
Besser informiert mit …

Anzeige
AW: Das liegt daran, dass du die StandardNamen ...
15.07.2015 14:25:08
Daniel
Luc du dummkopf
ich habe deine Beiträge nicht ignoriert, sonst würde ich doch das nicht schreiben, das es prinzipell geht.
ich konnte mich jetzt nur nicht mehr daran erinnern, was man genau machen muss.
du bist ja ein vielschreiber und vielantworter, da kann ich mir nicht alles merken, was du so von dir gibst (zumal dein Schreibstil ohne Absätze, dafür mit Abkürzungen manchmal für den Laien etwas anstrengend zu lesen ist)
Ich würde ich also bitten, solche behauptungen über mich in zukunft zu unterlassen.
Gruß Daniel

Anzeige
Was? Dass du nicht auf die Idee gekommen bist? ;-)
15.07.2015 15:30:41
Luc:-?
Luc :-?

AW: Was? Dass du nicht auf die Idee gekommen bist? ;-)
15.07.2015 16:03:55
Daniel
jo, auf die Idee bin ich ja gekommen.
nur halt nicht mehr auf die genaue Ausführungsweise.
Ausserdem, woher nimmst du das Wissen, dass ich deine Beiträge ignoriere?

AW: Was? Dass du nicht auf die Idee gekommen bist? ;-)
15.07.2015 18:35:37
PeTeR
Hallo Daniel, hallo Luc,
vielen DANK für eure hilfreichen Erklärungen!!
PeTeR

Anzeige
Bitte sehr! owT
16.07.2015 03:15:03
Luc:-?
:-?

Weil du selbst mal geschrieben hast, ...
16.07.2015 03:13:54
Luc:-?
…dass du sie häufig nicht bzw generell nicht alle in einem Thread liest!
Falls du nicht der Daniel, der übrigens mindestens 3× sooft antwortet wie ich, sein solltest, könntest du ja viell mal darüber nachdenken, wie du deine BTe von den seinen unterscheidbar machen könntest, vor allem, wenn es sich um AWen handelt!
Mit „auf die Idee gekommen“ meinte ich natürlich, die CodeNames zu ändern, nicht den Verweis im VBE.
Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA: Interner Blattname in Excel richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne die VBA-Entwicklungsumgebung:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Arbeitsmappe auswählen:

    • Stelle sicher, dass die Arbeitsmappe, auf die du zugreifen möchtest, geöffnet ist.
  3. Verwende den internen Blattnamen:

    • Um ein Blatt in deiner eigenen Arbeitsmappe zu löschen, kannst du den internen Namen verwenden:
      Tabelle3.Delete
  4. Zugriff auf eine andere Arbeitsmappe:

    • Um ein Blatt in einer anderen Arbeitsmappe zu löschen, verwende den Arbeitsblattnamen oder die Indexnummer:
      Workbooks("BlaBla.xlsx").Sheets("Tabelle3").Delete
    • Alternativ kannst du die Indexnummer nutzen:
      Workbooks("BlaBla.xlsx").Sheets(3).Delete
  5. Verweise einrichten (optional):

    • Wenn du direkt auf die Objektstruktur einer anderen Arbeitsmappe zugreifen möchtest, musst du sicherstellen, dass beide Mappen über Extras - Verweise bekannt gemacht sind.

Häufige Fehler und Lösungen

  • Fehler: Zugriff auf eine andere Arbeitsmappe über den internen Namen schlägt fehl.

    • Lösung: Verwende den Blattnamen oder die Indexnummer, wie oben beschrieben.
  • Fehler: VBE gibt eine Fehlermeldung bei der Verwendung von Standardnamen.

    • Lösung: Ändere die internen Namen (CodeNames) der Blätter. Dies kannst du manuell in den Objekteigenschaften tun.

Alternative Methoden

Eine Alternative zur Verwendung von VBA ist die Nutzung von Excel-Formeln, wenn du nur Daten analysieren oder extrahieren möchtest. Wenn du jedoch Blätter löschen oder umbenennen möchtest, ist VBA die bessere Wahl.


Praktische Beispiele

  1. Löschen eines Arbeitsblatts mit VBA:

    Sub BlattLoeschen()
       Workbooks("BlaBla.xlsx").Sheets("Tabelle3").Delete
    End Sub
  2. Umbenennen eines Arbeitsblatts:

    Sub BlattUmbenennen()
       Workbooks("BlaBla.xlsx").Sheets("Tabelle3").Name = "NeuerName"
    End Sub
  3. Zugriff auf mehrere Blätter:

    Sub MehrereBlaetterLoeschen()
       Dim wb As Workbook
       Set wb = Workbooks("BlaBla.xlsx")
       wb.Sheets("Tabelle1").Delete
       wb.Sheets("Tabelle2").Delete
    End Sub

Tipps für Profis

  • CodeNames anpassen: Ändere die CodeNames der Blätter, um sie eindeutiger zu machen und Verwirrung zu vermeiden.
  • Objektvariablen verwenden: Nutze Objektvariablen, um den Code lesbarer und effizienter zu gestalten:
    Dim wb As Workbook
    Set wb = Workbooks("BlaBla.xlsx")
    wb.Sheets("Tabelle3").Delete

FAQ: Häufige Fragen

1. Warum kann ich den internen Blattnamen nicht verwenden? Der Zugriff auf den internen Namen funktioniert nur innerhalb der eigenen Arbeitsmappe. Bei anderen Mappen musst du den Blattnamen oder die Indexnummer verwenden.

2. Was sind CodeNames? CodeNames sind die internen Namen, die Excel für Objekte verwendet. Sie sind nicht eindeutig und können für mehrere Mappen gleich sein, was zu Verwirrung führen kann.

3. Wie ändere ich den internen Blattnamen? Du kannst die CodeNames der Blätter in den Objekt­Eigenschaften im VBA-Editor ändern, um sie eindeutiger zu machen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige