Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Makro für bestimmte Tabellenblätter ausführen

Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:07:14
Bastian
Hallo zusammen,
ich habe folgendes Makro in meine Excel Arbeitsmappe eingebunden. Dieses funktioniert auch einwandfrei. Entsprechend des Codes, wird das Makro immer ausgeführt, wenn man speichert, egal auf welchem Tabellenblatt man sich befindet.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim CurrCell As Range
Dim CurrTextStr As String
Dim ListSep As String
Dim FeldSep As String
Dim str As String
Const cDir As String = "Zielordner"
Const cFName As String = "import_"
Const cFExt As String = ".csv"
Dim sFullFile As String
sFullFile = cDir & cFName & Format(Now, "YYYYMMDDhhmmss")
ListSep = ","
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = Worksheets("Tabelle 1").UsedRange
End If
Open sFullFile & ".csv" For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ""
FeldSep = IIf(CurrRow.Row 

Ich möchte nun erreichen, dass das Makro nur ausgeführt wird, wenn ich in bestimmten Tabellenblättern "Speichern" klicke. In den anderen sollte entsprechend beim Speichern nichts passieren. In meinem Fall soll das Makro ausgeführt werden , wenn in den Tabellen 5 und 6 gespeichert wird. Insgesamt besteht meine Arbeitsmappe aus 7 Tabellenblättern.
Kann mir hier jemand weiterhelfen? Ist mein Vorhaben überhaupt möglich?
Bin im Bereich VBA absoluter Einsteiger und habe mir den Code irgendwie zusammengebastelt mit Netzrecherche. Entsprechend komme ich momentan leider nicht weiter.
Vielen Dank im Voraus.
Bastian
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:13:46
Werner
Hallo Bastian,
so:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Select Case ActiveSheet.Name
Case "Tabelle5", "Tabelle6"
MsgBox "Hier dein Code"
Case Else
End Select
End Sub
Gruß Werner
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:33:58
Daniel
Wenn du jetzt noch bei Case Else
Cancel = True
einfügst, verhinderst du as Speichern vom falschen Tabellenblatt.
Gruß
Daniel
Anzeige
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:39:27
Werner
Hallo Daniel,
wenn er das will...
Ich bin aber davon ausgegangen, dass ein ganz normales Speichern der anderen Blätter möglich sein soll und er nur bei den bestimmten Blättern das Ausführen des Bevor_Save haben will.
Gruß Werner
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:44:46
Bastian
Hallo Werner, hallo Daniel,
vielen Dank für eure Vorschläge.
Die Variante von Werner hat schon funktioniert, vielen Dank!
Wie Werner geschrieben hat, soll tatsächlich das normale Speichern bei den anderen Blättern möglich sein. Trotzdem danke, Daniel.
Grüße
Bastian
Anzeige
Gerne u. Danke für die Rückmeldung. o.w.T.
26.06.2019 10:46:17
Werner
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:19:07
Nepumuk
Hallo Bastian,
würde ich so machen:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim CurrCell As Range
Dim CurrTextStr As String
Dim FeldSep As String
Dim str As String
Dim sFullFile As String
Const cDir As String = "Zielordner"
Const cFName As String = "import_"
Const cFExt As String = ".csv"
Const ListSep As String = ","
If ActiveSheet Is Tabelle5 Or ActiveSheet Is Tabelle6 Then
sFullFile = cDir & cFName & Format(Now, "YYYYMMDDhhmmss")
If Selection.Cells.Count > 1 Then
Set SrcRg = Selection
Else
Set SrcRg = Worksheets("Tabelle 1").UsedRange
End If
Open sFullFile & ".csv" For Output As #1
For Each CurrRow In SrcRg.Rows
CurrTextStr = ""
FeldSep = IIf(CurrRow.Row 

Gruß
Nepumuk
Anzeige
AW: Makro für bestimmte Tabellenblätter ausführen
26.06.2019 10:46:20
Bastian
Hallo Nepumuk,
danke für deine Hilfe. Werde ich als Alternative zum Vorschlag von Werner auch noch ausprobieren.
Die Variante von Werner läuft jedenfalls schonmal.
Danke und Grüße
Bastian
;

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

Makro für bestimmte Tabellenblätter ausführen


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel zu erstellen, das nur für bestimmte Tabellenblätter ausgeführt wird, befolge diese Schritte:

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

  2. Workbook auswählen: Doppelklicke auf DieseArbeitsmappe im Projektfenster.

  3. Code einfügen: Füge folgenden Code in das Modul ein:

    Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
       Select Case ActiveSheet.Name
           Case "Tabelle5", "Tabelle6"
               ' Hier deinen Code einfügen
           Case Else
               ' Nichts tun
       End Select
    End Sub
  4. Code anpassen: Ersetze den Kommentar ' Hier deinen Code einfügen mit dem spezifischen Code, den du ausführen möchtest.

  5. Speichern: Schließe den VBA-Editor und speichere die Arbeitsmappe.


Häufige Fehler und Lösungen

  • Fehler: Makro wird auch bei anderen Blättern ausgeführt: Stelle sicher, dass die Namen der Tabellenblätter korrekt im Select Case-Block angegeben sind.
  • Fehler: Excel reagiert nicht beim Speichern: Überprüfe, ob das Makro in einer .xlsm-Datei gespeichert ist, da Makros in normalen .xlsx-Dateien nicht funktionieren.
  • Lösung: Makro wird nicht korrekt ausgeführt: Achte darauf, dass kein Syntaxfehler im Code vorliegt. Teste den Code im VBA-Editor, um sicherzustellen, dass er fehlerfrei läuft.

Alternative Methoden

Falls du eine andere Möglichkeit suchst, das Verhalten beim Speichern zu steuern, kannst du den Case Else-Block anpassen:

Case Else
   Cancel = True ' Verhindert das Speichern

Diese Zeile sorgt dafür, dass das Speichern in anderen Blättern nicht möglich ist, was je nach Anforderung nützlich sein kann.


Praktische Beispiele

Hier ist ein Beispiel, wie der vollständige Code aussehen könnte, um CSV-Dateien zu generieren, wenn in bestimmten Blättern gespeichert wird:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim CurrCell As Range
    Dim CurrTextStr As String
    Dim sFullFile As String
    Const cDir As String = "Zielordner\"
    Const cFName As String = "import_"
    Const cFExt As String = ".csv"

    If ActiveSheet.Name = "Tabelle5" Or ActiveSheet.Name = "Tabelle6" Then
        sFullFile = cDir & cFName & Format(Now, "YYYYMMDDhhmmss") & cFExt
        ' Weitere Code zum Schreiben in die CSV-Datei
    End If
End Sub

Tipps für Profis

  • Debugging: Nutze die Debugging-Werkzeuge im VBA-Editor, um mögliche Probleme im Code schnell zu identifizieren.
  • Modularität: Halte den Code modular, indem du häufig verwendete Funktionen in separate Subroutinen auslagerst.
  • Dokumentation: Kommentiere deinen Code ausführlich, um die Nachvollziehbarkeit zu gewährleisten, insbesondere wenn du mit mehreren Tabellen arbeitest.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass das Makro nur bei bestimmten Benutzern funktioniert?
Antwort: Du kannst Benutzernamen in den Code integrieren und das Makro nur für diese Benutzer aktivieren.

2. Frage
Funktioniert dieser Code in Excel 2010 und neuer?
Antwort: Ja, der Code sollte in allen modernen Excel-Versionen funktionieren, solange die Datei im richtigen Format gespeichert ist.

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