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

Forumthread: Makro beim öffnen ausführen

Makro beim öffnen ausführen
02.03.2016 09:43:11
Ro
Hallo Ihr Lieben,
habe wieder mal ein Problem.
Und zwar geht es darum, dass ein Makro sofort nach dem öffnen der Datei ausgeführt werden soll.
Um folgendes Makro geht es (steht bisher in Modul 1):
Sub ListeErstellen(ByVal Zelle As Range)
Dim wksDst As Worksheet
Dim lrow As Long
If Zelle.Column 7 And Zelle.Row > 17 Then
If IsDate(Zelle.Value) Then
If Date - Zelle.Value > 300 Then
Set wksDst = ActiveWorkbook.Worksheets("Monitor Nachschulungen")
lrow = wksDst.Cells(Rows.Count, 3).End(xlUp).Row + 1
wksDst.Cells(lrow, 3) = Worksheets("Schulungskalender").Cells(Zelle.Row, 2)
wksDst.Cells(lrow, 2) = Worksheets("Schulungskalender").Cells(7, Zelle.Column)
wksDst.Cells(lrow, 4) = Worksheets("Schulungskalender").Cells(5, Zelle.Column)
End If
End If
End If
End Sub Bisher wird dieses durch folgenden Code aufgerufen (steht bisher im Reiter Schulungskalender):
Private Sub Worksheet_Change(ByVal Target As Range)
Call ListeErstellen(Target)
End Sub
Excel überträgt die Daten bei Ablauf des Datums bisher leider nicht automatisch. Deswegen _ dachte ich, dass man es mit einem "

Private Sub Workbook_Open" im Register DieseArbeitsmappe hinbekommt, aber irgendwie bekomme ich  _
das nicht hin...
Hat irgendjemand von euch eine Idee wie das zu lösen ist?
Betse Grüße,
ROXI

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro beim öffnen ausführen
02.03.2016 09:49:52
Steve
Hallo Roxi,
grundsätzlich ist die Workbook_Open-Routine richtig. Dazu musst du, um dein Makro 'ListeErstellen' starten zu können, ihm eine Zelle mit übergeben wie in deinem Change-Ereignis. Jedoch weist nur du welche dabei gemeint ist.
Private Sub Workbook_Open()
Dim DeineZelle As Range
Set DeineZelle = ?
Call ListeErstellen(DeineZelle)
End Sub

Anzeige
AW: Makro beim öffnen ausführen
02.03.2016 09:53:28
Steve
Achja, wenn das Makro in einem Tabellenblatt liegt, kann das so übrigens nicht funktionieren. Es muss entweder in einem Modul liegen oder du schreibst folgendes:
Call Sheets("Schulungskalender").ListeErstellen(DeineZelle)
lg Steve

AW: Makro beim öffnen ausführen
02.03.2016 10:08:46
Ro
Vielen Dank für eure super schnelle Hilfe!!!!
Jetzt muss ich aber trotzdem noch kurz nachhaken weil ich es nicht ganz verstehe.
Muss ich eine bestimmte Zelle angeben? ich will ja eigentlich einen ganzen Bereich überwacht haben (Alle Felder in einer bestimmten Range...)
Geht das dann nicht oder versteh ich etwas falsch?
Liebe Grüße ROXI

Anzeige
AW: Makro beim öffnen ausführen
02.03.2016 10:36:42
Steve
Hallo Roxi,
ja das musst du, weil dein Makro "ListeErstellen()" immer nur für eine Zelle funktioniert. Was _ du aber machen kannst wäre dein Makro für jede Zelle deines überwachten Bereiches aufrufen:

Private Sub Workbook_Open()
Dim Bereich As Range
Set Bereich = Sheets("Tabelle1").Range("A1:X50")
For Each Zelle In Bereich
Call ListeErstellen(Zelle)
Next Zelle
End Sub
Selbstverständlich musst du den Bereich für dich anpassen. Beachte dabei - je größer du deinen Bereich einstellst, desto länger kann unter Umständen das Öffnen der Mappe dauern.
lg Steve

Anzeige
AW: Makro beim öffnen ausführen
02.03.2016 09:50:20
Michael
Hallo,
den Makro mittels eines 'workbook.open'-event zu starten, stimmt. Versuche doch einmal mit alt-f11 und Doppel-Klick auf das Workbook-Objekt in die Maske zu gehen. Dann mit den Drop-downs oben rechts per Mausklick das 'workbook.open'-event anzulegen.
Als einzigen Befehl musst du dann eintippen: call meinMakroNamen
Mfg
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro beim Öffnen ausführen in Excel


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Makro beim Öffnen auszuführen, musst du den entsprechenden Code in das DieseArbeitsmappe-Modul deiner Excel-Datei einfügen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne Excel und lade die Datei, in der du das Makro automatisieren möchtest.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Im Projekt-Explorer auf der linken Seite, suche nach DieseArbeitsmappe unter deinem Projekt.

  4. Doppelklicke auf DieseArbeitsmappe, um das Codefenster zu öffnen.

  5. Füge den folgenden Code hinzu:

    Private Sub Workbook_Open()
        Dim DeineZelle As Range
        Set DeineZelle = Sheets("Schulungskalender").Range("A1") ' Beispiel-Zelle
        Call ListeErstellen(DeineZelle)
    End Sub
  6. Speichere die Datei im .xlsm-Format, um die Makros zu aktivieren.

  7. Schließe den VBA-Editor und öffne die Datei erneut, um das Makro beim Öffnen auszuführen.


Häufige Fehler und Lösungen

  • Fehler: "Komponente nicht gefunden"

    • Stelle sicher, dass das Makro im richtigen Modul gespeichert ist. Es sollte nicht im Tabellenblatt-Modul, sondern im DieseArbeitsmappe-Modul stehen.
  • Fehler: Makro wird nicht ausgeführt

    • Überprüfe, ob die Makros in den Excel-Einstellungen aktiviert sind. Gehe zu Datei > Optionen > Sicherheitscenter > Einstellungen für das Sicherheitscenter > Einstellungen für Makros und aktiviere die Option für alle Makros aktivieren.

Alternative Methoden

Falls du keine "Workbook_Open"-Ereignisse verwenden möchtest, kannst du auch einen Button oder ein anderes Ereignis verwenden, um dein Makro manuell auszuführen. Eine Möglichkeit ist, ein Makro zu erstellen, das bei einem bestimmten Ereignis, wie z.B. dem Ändern einer Zelle, ausgeführt wird:

Private Sub Worksheet_Change(ByVal Target As Range)
    Call ListeErstellen(Target)
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du ein VBA Makro beim Öffnen für einen Bereich von Zellen ausführen kannst:

Private Sub Workbook_Open()
    Dim Bereich As Range
    Set Bereich = Sheets("Schulungskalender").Range("A1:X50")
    For Each Zelle In Bereich
        Call ListeErstellen(Zelle)
    Next Zelle
End Sub

Dieser Code ruft das Makro ListeErstellen für jede Zelle im angegebenen Bereich auf. Achte darauf, dass große Bereiche die Öffnungszeit der Datei verlängern können.


Tipps für Profis

  • Verwende Excel.Auto_Open: Du kannst auch die Auto_Open-Subroutine verwenden, um ein Makro beim Öffnen zu starten. Dies ist eine alternative Methode, die bei älteren Excel-Versionen nützlich sein kann.

  • Ereignisse optimieren: Überlege, ob du das Makro nur für bestimmte Zellen oder Bedingungen ausführen möchtest, um die Leistung zu verbessern.

  • Fehlerbehandlung einfügen: Füge Fehlerbehandlungsroutinen hinzu, um sicherzustellen, dass dein Makro robust ist und auch bei unerwarteten Eingaben korrekt funktioniert.


FAQ: Häufige Fragen

1. Muss ich eine bestimmte Zelle angeben, wenn ich mein Makro beim Öffnen ausführen möchte?
Ja, du musst eine Zelle angeben, weil das Makro "ListeErstellen()" für eine bestimmte Zelle entwickelt wurde. Du kannst jedoch eine Schleife verwenden, um mehrere Zellen zu bearbeiten.

2. Wie kann ich sicherstellen, dass mein Makro beim Öffnen automatisch ausgeführt wird?
Stelle sicher, dass der Code im DieseArbeitsmappe-Modul ist und dass die Makroeinstellungen in Excel so gesetzt sind, dass sie die Ausführung von Makros erlauben.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige