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

Forumthread: Worksheet.activate

Worksheet.activate
19.07.2002 12:36:36
Christoph
Hallo Forums User

Mit nachfolgend aufgeführtem Code möchte ich ein Tabellenblatt
aktivieren um daraus Zellen auszulesen.

Dim wks_active As Worksheet
Set wks_active = Workbooks(ActiveWorkbook.Name).Worksheets(ActiveSheet.Name)
Call loaddatei("X:\\BERECHNG\EXCEL-Berechnung\Schraub.xls", "Schraub.xls")
Set wks_schraub = Workbooks("Schraub.xls").Worksheets("Schr.Berechnung")
wks_active.Activate

Während des Programmablaufes wechsel ich Tabellenblätter und Arbeitsmappen.
Am Ergebniss des Programmablaufes ( debuggen )kann ich erkennen
das nicht immer das geünschte Tabellenblatt aktiv ist.

Denn gleichen Fehler bekomme ich ab und an beim Aufruf
Worksheets(1).activate für mein Verständnis ist hiermit das erste
Tabellenblatt in der aktiven Mappe gemeint.


Gruss Christoph

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Worksheet.activate
19.07.2002 13:19:44
Martin M.
Hallo Christoph,
das Tabellenblatt in dem du das Makro aufrufst ist das aktive blatt. Deswegen kannst du deine Variable so zuweisen:
Set wks_active = ActiveSheet (Den Variablenamen würde ich aber nicht so nennen, weil er nicht aussagekräftig ist).
Wenn du mit der Funktion loaddatei (ich vermute, daß das eine benutzerdefinierte funktion ist) eine neue Datei öffnest, ist diese automatisch die aktive Arbeitsmappe. Die Zuweisung für die Variable wks_schraub ist so richtig, wie du sie gemacht hast.
Wenn du also mit Objektvariablen arbeitest, kannst du diese direkt ansprechen, ohne daß du sie aktivieren mußt. z.B. wks_active.cells(1,1) = "irgendeintext"

Worksheets(1) ist das erste Blatt.

Jedenfalls wird das Datenblatt oder die Mappe mit activate aktiviert. Das dürfte keinen Fehler geben.

Grüße
Martin M.

Anzeige
Re: Worksheet.activate/Addin
19.07.2002 15:01:00
Christoph
Hallo Martin

Ich habe vergessen zu schreiben, das ich die Makros aus einem
Addin aufrufe.
Verhält es sich hiermit jetzt anders ?

Gruss Christoph

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Aktivieren von Arbeitsblättern in VBA


Schritt-für-Schritt-Anleitung

Um ein Arbeitsblatt in VBA zu aktivieren, kannst du den folgenden Beispielcode verwenden:

Dim wks_active As Worksheet
Set wks_active = ActiveSheet ' Setzt das aktive Blatt als wks_active
wks_active.Activate ' Aktiviert das Arbeitsblatt

Wenn du ein bestimmtes Arbeitsblatt aktivieren möchtest, kannst du den Namen des Blattes verwenden:

Worksheets("MeinBlatt").Activate ' Aktiviert das Blatt mit dem Namen "MeinBlatt"

Wenn du das erste Arbeitsblatt aktivieren möchtest, kannst du den folgenden Code verwenden:

Worksheets(1).Activate ' Aktiviert das erste Arbeitsblatt in der aktiven Arbeitsmappe

Häufige Fehler und Lösungen

Ein häufiger Fehler ist, dass das gewünschte Arbeitsblatt nicht aktiv wird, wenn du mit mehreren Arbeitsmappen arbeitest. Wenn du ein Arbeitsblatt in einer bestimmten Arbeitsmappe aktivieren möchtest, stelle sicher, dass die Arbeitsmappe aktiviert ist:

Workbooks("MeineArbeitsmappe.xlsx").Activate ' Aktiviert die Arbeitsmappe
Worksheets("MeinBlatt").Activate ' Aktiviert das Blatt in der aktiven Arbeitsmappe

Ein weiterer Fehler kann auftreten, wenn du versuchst, ein Arbeitsblatt zu aktivieren, das in einer Add-in-Datei enthalten ist. In diesem Fall musst du sicherstellen, dass das Add-in korrekt geladen ist.


Alternative Methoden

Du kannst auch die Select-Methode verwenden, um ein Arbeitsblatt auszuwählen, anstatt es zu aktivieren:

Worksheets("MeinBlatt").Select ' Wählt das Blatt aus, aktiviert es aber nicht

Die Verwendung von Select wird jedoch nicht empfohlen, da es den Code weniger effizient macht. Es ist besser, die Arbeitsblattvariable direkt zu verwenden, um auf Zellen oder Bereiche zuzugreifen, ohne das Blatt aktivieren zu müssen.


Praktische Beispiele

Hier sind einige praktische Beispiele, die dir helfen, Arbeitsblätter in VBA zu aktivieren:

  1. Aktivieren eines Arbeitsblatts und Ändern einer Zelle:

    Dim wks As Worksheet
    Set wks = ThisWorkbook.Worksheets("Daten")
    wks.Activate
    wks.Cells(1, 1).Value = "Neuer Wert" ' Setzt den Wert in A1
  2. Aktivieren eines Arbeitsblatts in einer anderen Arbeitsmappe:

    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\Users\MeinBenutzer\Documents\AndereArbeitsmappe.xlsx")
    wb.Worksheets("Bericht").Activate

Tipps für Profis

  • Vermeide die Verwendung von .Activate und .Select so oft wie möglich. Greife stattdessen direkt auf die Arbeitsblattobjekte zu, um die Effizienz deines Codes zu verbessern.
  • Wenn du mit mehreren Arbeitsmappen arbeitest, verwende With-Blöcke, um den Code lesbarer zu gestalten:

    With Workbooks("MeineArbeitsmappe.xlsx").Worksheets("MeinBlatt")
        .Cells(1, 1).Value = "Wert"
        .Cells(1, 2).Value = "Anderer Wert"
    End With

FAQ: Häufige Fragen

1. Wie aktiviere ich ein Arbeitsblatt in einer Add-in-Datei?
Du musst sicherstellen, dass das Add-in geladen ist und dann die Arbeitsmappe aktivieren, bevor du das Arbeitsblatt aktivierst.

2. Warum wird mein Arbeitsblatt nicht aktiviert, wenn ich Worksheets(1).Activate verwende?
Stelle sicher, dass du die richtige Arbeitsmappe aktiviert hast. Möglicherweise ist eine andere Arbeitsmappe aktiv, was dazu führt, dass in dieser die Blätter aktiviert werden.

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