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

Forumthread: aktives Sheet ansprechen

aktives Sheet ansprechen
13.11.2016 10:32:54
Werner
Hallo,
ich habe ein Makro gefunden, in dem folgender Befehl enthalten ist:
Dim MySheet As Worksheet
Set MySheet = ActiveWorkbook.Sheets(1)

Wie sieht der Befehl aus, um das aktive Blatt anzusprechen?
Danke im Voraus
Werner
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: aktives Sheet ansprechen
13.11.2016 10:34:55
Hajo_Zi
Hallo Werner,
Datei ist nicht notwendig.
Set MySheet = ActiveSheet

AW: aktives Sheet ansprechen
13.11.2016 15:33:52
Werner
Hallo Hajo_Zi,
danke für die Antwort. Hat funktioniert.
Kleiner Hinweis für die anderen "Antworter": im Makro wird mehrfach die Set-Variable angesprochen. Deshalb konnte ich das nicht einfach "weglassen".
Anzeige
ohne Zuweisung immer das aktive Sheet ...
13.11.2016 10:39:29
Matthias
Hallo
Ohne Referenzierung wird immer das aktive Sheet angesprochen
Gruß Matthias
AW: -bei Prozeduren in einem allgem. Modul
13.11.2016 10:50:17
Gerd
Hallo,
der Vollständigkeit halber:
Bei Prozeduren in einem Tabellenblatt-Modul wird ohne Angabe eines Blattes automatisch auf das Tabellenblatt des Blattmoduls referenziert.
Gruß Gerd
und was willst Du mir damit jetzt sagen ?
13.11.2016 15:54:58
Matthias
Hallo,
Das hatte ich bereits erwähnt!
Ohne Referenzierung wird immer das aktive Sheet angesprochen(siehe meine Antwort)
Deine Info an mich kann ich also nicht nachvollziehen
Gruß Matthias
Anzeige
AW: Lese meine Aussage u. vergleiche sie..
13.11.2016 17:06:32
Gerd
Hallo
..mit deiner. Denke aber, dass du den Unterschied kennst u. nur nicht darauf eingegangen bist.
Gruß Gerd
Lese Du meine Aussage ...
13.11.2016 22:54:45
Matthias
Hallo,
Ohne Referenzierung wird immer das aktive Sheet angesprochen(siehe meine Antwort)
Wie bereits erwähnt:
Deine Info an mich kann ich nicht nachvollziehen.
Gruß Matthias
Anzeige
Aber, aber meine Herren! Streit um (aktualis.) ...
14.11.2016 15:35:28
Luc:-?
…„Tengelmanns Kette“! ;-)
Ein Dok-KlassenModul des Blattes enthält definierte Ereignisse, auf die dort reagiert wdn kann. Lässt man das Me weg, wird zwar nicht das ActiveSheet angesprochen, sondern weiterhin genau dieses Blatt, das ist dann aber in den meisten Fällen auch das aktive, weil seine Ereignisse idR nur so ausgelöst wdn (_Calculate mag hierbei eine Ausnahme bilden).
Gruß, Luc :-?
Besser informiert mit …
Anzeige
ich mags nicht wenn man auf Antworten antwortet
14.11.2016 17:58:43
Matthias
Hallo Luc
Wenn man auf Antworten antwortet hat es einen faden Beigeschmack.
Ich meine damit Gerd.
Er hätte dem Fragenden antworten können, nicht aber auf meine Antwort reagieren.
Sowas kommt bei mir mächtig arrogant rüber.
Ich habs nun mehrfach erwähnt
Seine Info an mich kann ich nicht nachvollziehen.
Hätte er sie anders platziert, wärs mir egal.
Gruß Matthias
Anzeige
Das weiß ich, aber das liegt sicher daran, ...
14.11.2016 18:12:09
Luc:-?
…Matti,
dass er deine zuletzt gelesen hatte und dann vergessen hat, wieder hochzurücken. So etwas ist mir auch schon passiert, aber diesmal war's Absicht… ;-)
Aber darüber habt ihr ja augenscheinlich gerade nicht gestritten bzw einander miss­verstanden…
Gruß, Luc :-?
AW: ich mags nicht wenn man auf Antworten antwortet
14.11.2016 18:21:09
Daniel
Nunja Matthias, deine Aussage mit "immer" ist halt nicht zutreffend, daher sollte dir Gerds Antwort eben nicht egal sein, und deswegen hat er sie auch an dich gerichtet, damit du in Zukunft auf diese Frage (und die wird ja durchaus öfters gestellt), die richtige Antwort geben kannst.
Gruß Daniel
Anzeige
Ich habe richtig geantwortet! owT
14.11.2016 18:28:57
Matthias
AW: Nein, da müssen wir durch!
14.11.2016 20:35:21
Gerd
Hallo zusammen!
Ich habe richtig geantwortet! owT
Ohne Referenzierung wird immer das aktive Sheet angesprochen
Ich gestehe generell jedem (auch mir) zu, sich mal zu irren!
Hier stimmt nur das weibliche "immer", verwendet im Sinne von "oft", "häufig", "meistens" etc.
Die ganze Veranstaltung hier ist öffentlich. Da muss man mit unerwarteten u. ggf. sogar missliebigen Reaktionen leben können. Ob man dies mag oder nicht.
Und nun noch etwas "Butter bei die Fische":
'In ein allgemeines Modul (z.B. Modul1)
Sub Test()
'Wir aktivieren Tabelle2
Tabelle2.Activate
'Wir fragen das Blatt zum Range ohne Blattangabe ab
MsgBox Range("A1").Parent.Name
'wir fragen nach dem aktiven Blatt
MsgBox ActiveSheet.Name
End Sub

'Ins Modul von Tabelle1 ("Eins!")
Private Sub CommandButton1_Click()
'Wir aktivieren ein anderes Blatt("Tabelle2")
Tabelle2.Activate
'Wir fragen das Blatt zum Range ohne Blattangabe ab
MsgBox Range("A1").Parent.Name
'Wir fragen nach dem aktiven Blatt
MsgBox ActiveSheet.Name
End Sub

Frohes Schaffen
Gerd
Anzeige
Das sind d.Ereignisse, b.denen (weggelassenes) …
14.11.2016 21:24:25
Luc:-?
Me nicht auf das aktive, sondern wie stets nur auf das PgmStandOrtBlatt verweist, das in diesen Fällen nicht mit dem aktiven identisch ist und sein kann, Folks.
Anders sieht's natürlich bei Ereignissen aus, bei denen Me ohnehin aktiviert sein muss. Aber das ist eben sekundär und wenn man sich stets darauf verlässt, kann man an anderer Stelle reinfallen (wie einige schon abundzu mit ThisWorkbook, das (ggf noch begründeter) nicht mit ActiveWorkbook über­einstimmen muss, obwohl das mitunter sein kann.
Diese Fällen sind dann zu beachten, wenn man sie verwendet. Also auch, wenn Me entfällt, ist immer noch Me gemeint! Das dürfte doch leicht zu merken sein (Matti ;-]), zumal es Me nur in diesen Klassen­Modulen gibt.
Gruß, Luc :-?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Aktives Sheet in Excel VBA ansprechen


Schritt-für-Schritt-Anleitung

Um das aktive Tabellenblatt in Excel VBA anzusprechen, kannst Du den folgenden Befehl verwenden:

Set MySheet = ActiveSheet

Hiermit wird die Variable MySheet auf das aktuell aktive Blatt gesetzt. Das ist besonders nützlich, wenn Du mit mehreren Blättern arbeitest und sicherstellen möchtest, dass Dein Code auf das richtige Blatt zugreift.

Falls Du das aktive Blatt in einem bestimmten Kontext verwenden möchtest, kannst Du es auch in einer Subroutine oder Funktion einbinden:

Sub AktivesSheetAnsprechen()
    Dim MySheet As Worksheet
    Set MySheet = ActiveSheet
    MsgBox "Das aktive Blatt ist: " & MySheet.Name
End Sub

Häufige Fehler und Lösungen

Ein häufiger Fehler ist die Annahme, dass ohne Referenzierung immer das aktive Tabellenblatt angesprochen wird. Tatsächlich kann dies je nach Kontext variieren, insbesondere wenn Du in einem Blattmodul arbeitest.

Problem: Du erhältst einen Fehler, wenn Du versuchst, auf ActiveSheet zuzugreifen.

Lösung: Stelle sicher, dass Du nicht in einem Kontext bist, in dem kein aktives Blatt existiert. Dies kann passieren, wenn Du eine Datei öffnest, die keine Blätter enthält.


Alternative Methoden

Neben der Verwendung von ActiveSheet kannst Du auch spezifische Blattnamen verwenden, um darauf zuzugreifen. Dies ist besonders nützlich, um Verwirrung zu vermeiden:

Set MySheet = ThisWorkbook.Sheets("Blattname")

Eine weitere Methode ist die Verwendung von Worksheets, die identisch ist zu Sheets, jedoch spezifisch für Arbeitsblätter:

Set MySheet = ThisWorkbook.Worksheets("Blattname")

Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung des aktiven Tabellenblatts:

Beispiel 1: Daten aus dem aktiven Blatt lesen

Sub DatenLesen()
    Dim MySheet As Worksheet
    Set MySheet = ActiveSheet
    MsgBox "Wert in Zelle A1: " & MySheet.Range("A1").Value
End Sub

Beispiel 2: Das aktive Blatt umbenennen

Sub BlattUmbenennen()
    Dim MySheet As Worksheet
    Set MySheet = ActiveSheet
    MySheet.Name = "Neuer Name"
End Sub

Tipps für Profis

  • Nutze immer Set MySheet = ActiveSheet, wenn Du auf das aktive Blatt zugreifen möchtest, um den Code leserlicher zu machen.
  • Vermeide es, ActiveSheet in großen Projekten zu verwenden, da dies zu unerwartetem Verhalten führen kann. Stattdessen ist es besser, explizit mit Blattnamen zu arbeiten.
  • Dokumentiere Deinen Code gut, um sicherzustellen, dass Du und andere Benutzer verstehen, welches Blatt angesprochen wird.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass ich das richtige Blatt anspreche?
Antwort: Verwende spezifische Blattnamen anstelle von ActiveSheet, um Verwechslungen zu vermeiden.

2. Frage
Was passiert, wenn kein Blatt aktiv ist?
Antwort: In diesem Fall wird ein Laufzeitfehler ausgelöst. Stelle sicher, dass das Workbook mindestens ein Blatt enthält und es aktiv ist, bevor Du versuchst, darauf zuzugreifen.

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