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

Forumthread: Worksheet ansprechen

Worksheet ansprechen
Seb
Hallo Forum,
ich habe eine Grundlagen-Frage die mir den letzten Nerv raubt ;)
Und zwar würde ich gerne ein Worksheet nicht über seinen Namen, also zb:
ThisWorkbook.Worksheets("Erstantrag").Activate
sondern auf einem anderen Weg ansprechen, da jmd diesen Namen ja evtl zu einem späteren Zeitpunkt ändern könnte/darf/muss...
Es würde ansch. ja noch über ThisWorkbook.Worksheets(1).Activate, also den Index? gehen, aber wenn jmd vor dem Sheet ein weiteres einfügt, stimmt dieser doch auch wieder nicht, oder?
Gibt es noch eine andere Möglichkeit?
Beste Grüße,
Seb
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Worksheet ansprechen
15.08.2012 12:26:32
Hajo_Zi
benutze den Internen Namen Tabelle2.Range("A1")="Test"
Select, Activate usw. ist in VBA zu 99,9% nicht notwendig.
Der Cursor ist kein Hund der überall rumgeführt werden muss.

AW: Worksheet ansprechen
15.08.2012 12:30:42
Seb
Genau das hatte ich gesucht,
nur immer mit Worksheets(Tabelle2) versucht zu arbeiten...
DANKE!!!!! :D
Anzeige
AW: Worksheet ansprechen
15.08.2012 12:36:27
Hajo_Zi
Worksheets(Tabelle1.Name)
Gruß Hajo
Das fktt aber nur solange niemand auf die ...
15.08.2012 16:27:33
Luc:-?
…Idee kommt, auch diesen zu ändern, Seb! ;-)
Das kannst du übrigens auch selbst tun, um dann allein mit diesem, dann hoffentl eindeutigen, zu arbeiten (ohne ThisWorkbook). Außerdem ist der automatisch festgelegte interne Name landesspezifisch. Soll ein Pgm unter verschiedenen Landesversionen laufen, ist in diesem Fall eine Eigenvergabe des Internnamens unumgänglich, denn es dürfte äußerst fraglich sein, ob Xl ein beliebiges VBA-Pgm derart anpasst.
Die Verwendung von ThisWorkbook kann übrigens in den Programmen eines AddIns tödlich sein — man sollte es deshalb nicht standardmäßig verwenden. Es bezieht sich nämlich immer auf die Standortmappe des Programms! Besser ist generell ActiveWorkbook, wenn es auch um dieses geht. ThisWorkbook also nur verwenden, wenn auch in jedem Fall die Standortmappe gemeint ist. Nachträglich angelegte Makro-Sammelmappen haben anderenfalls das gleiche Problem wie AddIns.
Gruß Luc :-?
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

Worksheet ansprechen in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Worksheet in Excel VBA anzusprechen, ohne den Namen des Blattes direkt zu verwenden, kannst Du den internen Namen oder den Index des Arbeitsblatts nutzen. Hier sind die Schritte:

  1. Internen Namen verwenden: Um ein Arbeitsblatt über seinen internen Namen anzusprechen, kannst Du folgenden Code verwenden:

    Tabelle2.Range("A1") = "Test"

    Dies setzt den Wert der Zelle A1 im Arbeitsblatt mit dem internen Namen "Tabelle2" auf "Test".

  2. Index verwenden: Du kannst auch den Index des Arbeitsblatts verwenden, um es zu aktivieren:

    ThisWorkbook.Worksheets(1).Activate

    Beachte, dass sich der Index ändern kann, wenn jemand ein neues Arbeitsblatt hinzufügt.

  3. Aktives Tabellenblatt ansprechen: Wenn Du mit dem aktuell aktiven Blatt arbeiten möchtest, kannst Du dies mit ActiveSheet tun:

    ActiveSheet.Range("A1") = "Test"

Häufige Fehler und Lösungen

  • Problem: Der Index ist nicht mehr aktuell, wenn ein neues Blatt hinzugefügt wird.

    • Lösung: Vermeide die Verwendung des Indexes und greife stattdessen auf den internen Namen des Arbeitsblattes zurück.
  • Problem: Fehler durch die Verwendung von ThisWorkbook.

    • Lösung: Verwende ActiveWorkbook, wenn Du sicherstellen möchtest, dass Du auf die Arbeitsmappe zugreifst, die gerade aktiv ist und nicht auf die, die das Makro enthält.

Alternative Methoden

  • VBA ThisWorksheet verwenden: Du kannst auch auf das aktuelle Arbeitsblatt zugreifen, in dem sich das Makro befindet:

    ThisWorkbook.Worksheets(ThisWorksheet.Name).Range("A1") = "Test"
  • VBA Workbook ansprechen: Wenn Du mit mehreren Arbeitsmappen arbeitest, kannst Du die Arbeitsmappe direkt ansprechen:

    Workbooks("DeinWorkbook.xlsx").Worksheets("Tabelle1").Range("A1") = "Test"

Praktische Beispiele

  1. Ein Wert in ein bestimmtes Arbeitsblatt schreiben:

    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Tabelle1")
    ws.Range("A1") = "Beispielwert"
  2. Durch alle Arbeitsblätter iterieren:

    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
       ws.Range("A1") = "Aktuelles Blatt: " & ws.Name
    Next ws

Tipps für Profis

  • Verwende immer interne Namen, wenn Du sicherstellen möchtest, dass Dein VBA-Code auch nach Änderungen an den Blattnamen weiterhin funktioniert.
  • Halte Deinen Code sauber und vermeide unnötige Select und Activate Befehle. Diese sind in den meisten Fällen überflüssig und können den Code verlangsamen.
  • Nutze Fehlerbehandlungsroutinen, um sicherzustellen, dass Dein Code auch bei unerwarteten Problemen robust bleibt.

FAQ: Häufige Fragen

1. Wie kann ich auf ein anderes Tabellenblatt in einer anderen Arbeitsmappe zugreifen?
Du kannst das Arbeitsblatt in einer anderen Arbeitsmappe ansprechen, indem Du den Namen der Arbeitsmappe angibst:

Workbooks("AndereMappe.xlsx").Worksheets("Tabelle1").Range("A1") = "Wert"

2. Was ist der Unterschied zwischen ThisWorkbook und ActiveWorkbook?
ThisWorkbook bezieht sich auf die Arbeitsmappe, in der das Makro gespeichert ist, während ActiveWorkbook die aktuell aktive Arbeitsmappe bezeichnet, die möglicherweise eine andere sein kann.

3. Wie kann ich sicherstellen, dass ein bestimmtes Arbeitsblatt vorhanden ist, bevor ich darauf zugreife?
Du kannst eine Schleife verwenden, um zu überprüfen, ob das Arbeitsblatt existiert:

Dim ws As Worksheet
On Error Resume Next
Set ws = ThisWorkbook.Worksheets("Tabelle1")
On Error GoTo 0
If Not ws Is Nothing Then
    ' Arbeitsblatt existiert
Else
    ' Arbeitsblatt existiert nicht
End If

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