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

Inhalt beim Schließen Löschen

Forumthread: Inhalt beim Schließen Löschen

Inhalt beim Schließen Löschen
26.05.2016 21:27:32
Falo
Hallo,
ich habe eine Tabelle und ich möchte wenn ich die Tabelle schließe, sollen die Daten von "A2" bis "O" bis zum Letzten Eintrag gelöscht werden. es sollte eine Abfrage kommen
hat einer eine Idee?
Gruß
Olaf

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Inhalt beim Schließen Löschen
27.05.2016 07:32:57
Hajo_Zi
Hallo Olaf,
Da Werbung wichtiger ist als die Anzeige der Version und des Levels des Fragestellers.
Kann ich auf diese Angaben nicht mehr eingehen.
Falls diese Angaben nicht im Beitrag stehen.
Ich möchte mal hoffen das Werbung nicht so wichtig wird, das auch der Beitrag irgendwann, durch Werbung abgedeckt wird.
starte den VBA Editor (Alt+F11), Bild sollte zweigeteilt sein ansonsten Strg+R, Doppelklick auf Deine Datei, Doppelklick auf DieseArbeitsmappe, Code ins rechte Fenster kopieren, VBA Editor schließen.
Das Makro wird automatisch gestartet.
Der Code wirkt in der gesamten Datei.
Option Explicit
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Range("A2").ClearContents
Columns(15).clearvontents
End Sub


Anzeige
AW: Inhalt beim Schließen Löschen
27.05.2016 11:13:01
Werner
Hallo Falo,
Code gehört in diese Arbeitsmappe.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Mldg$
Dim loLetzte As Long
Mldg = MsgBox("Soll der Bereich gelöscht werden?", vbYesNo + vbQuestion, "Löschbestätigung")
If Mldg = vbYes Then
With Sheets("Tabelle1")  'Tabelle anpassen
loLetzte = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile in Spalte A ggf. anpassen
.Range(.Cells(2, 1), .Cells(loLetzte, 15)).ClearContents
End With
ElseIf Mldg = vbNo Then Exit Sub
End If
End Sub
Gruß Werner

Anzeige
AW: Inhalt beim Schließen Löschen
27.05.2016 13:10:00
Nepumuk
Hallo Werner,
der Rückgabewert einer MsgBox ist ein Wert vom Typ Long, genauer gesagt ein enumerierter Wert vom Type VbMsgBoxResult, du benutzt einen String.
Ich würde das auch so gestalten:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If MsgBox("Soll der Bereich gelöscht werden?", vbYesNo Or vbQuestion, "Löschbestätigung") = vbYes Then
        With Worksheets("Tabelle1")
            .Range(.Cells(2, 1), .Cells(.Cells(Rows.Count, 1).End(xlUp).Row, 15)).ClearContents
        End With
    End If
End Sub

Gruß
Nepumuk

Anzeige
Da fehlt noch ein Bezugspunkt
27.05.2016 13:14:29
Nepumuk
Nämlich vor Rows.Count,
Also:
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If MsgBox("Soll der Bereich gelöscht werden?", vbYesNo Or vbQuestion, "Löschbestätigung") = vbYes Then
        With Worksheets("Tabelle1")
            .Range(.Cells(2, 1), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 15)).ClearContents
        End With
    End If
End Sub

Wenn nämlich das aktive Blatt ein Diagramm ist, läuft die Eigenschaft Rows.Count in einen Fehler.
Gruß
Nepumuk

Anzeige
AW: Da fehlt noch ein Bezugspunkt
27.05.2016 13:44:19
Werner
Hallo Nepumuk,
danke für die Hinweise, werden gespeichert.
Bei einem kurzen Test hat meine Version aber funktioniert - bin natürlich trotzdem für deine Hinweise dankbar.
Gruß Werner

AW: Da fehlt noch ein Bezugspunkt
27.05.2016 22:47:53
Falo
Hallo,
Klappt Super, Danke Werner und Nepumuk.
Gruß
Olaf

AW: Gerne u. Danke für die Rückmeldung. o.w.T.
28.05.2016 06:03:52
Werner
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Inhalte beim Schließen von Excel löschen


Schritt-für-Schritt-Anleitung

Um Inhalte in einer Excel-Tabelle beim Schließen der Datei zu löschen, kannst Du ein Makro verwenden. Folge diesen Schritten:

  1. Öffne die Excel-Datei, in der Du die Daten löschen möchtest.

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

  3. Doppelklicke auf "DieseArbeitsmappe" im Projektfenster.

  4. Füge den folgenden VBA-Code in das rechte Fenster ein:

    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
       Dim Mldg As Long
       Dim loLetzte As Long
       Mldg = MsgBox("Soll der Bereich gelöscht werden?", vbYesNo + vbQuestion, "Löschbestätigung")
       If Mldg = vbYes Then
           With Worksheets("Tabelle1")  ' Passe den Tabellennamen an
               loLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row ' Letzte Zeile in Spalte A
               .Range(.Cells(2, 1), .Cells(loLetzte, 15)).ClearContents
           End With
       End If
    End Sub
  5. Schließe den VBA-Editor und speichere die Datei.

  6. Wenn Du die Tabelle nun schließt, wirst Du gefragt, ob Du die Inhalte löschen möchtest.


Häufige Fehler und Lösungen

  • Fehler: "Objektvariable oder With-Blockvariable nicht festgelegt"

    • Stelle sicher, dass der Name des Arbeitsblatts korrekt ist.
  • Fehler: "Laufzeitfehler - 9: Index außerhalb des gültigen Bereichs"

    • Dieser Fehler tritt auf, wenn das angegebene Arbeitsblatt nicht existiert. Überprüfe den Blattnamen in Deinem Code.
  • Fehler: "Typen unverträglich"

    • Achte darauf, dass die Variablen richtig deklariert sind, insbesondere Mldg, das den Rückgabewert der MsgBox speichern sollte.

Alternative Methoden

Wenn Du kein Makro verwenden möchtest, kannst Du auch manuell die Inhalte löschen, bevor Du die Datei schließt. Dies ist jedoch weniger automatisiert:

  1. Markiere den Bereich von A2 bis zur letzten Zeile in Spalte O.
  2. Drücke die Entf-Taste oder klicke mit der rechten Maustaste und wähle "Inhalt löschen".

Diese Methode ist weniger effektiv, da sie nicht automatisch beim Schließen der Excel-Tabelle ausgeführt wird.


Praktische Beispiele

Ein Beispiel für die Verwendung des Codes:

  • Du hast eine Arbeitsmappe mit dem Namen "Verkauf", und Du möchtest, dass beim Schließen die Daten in der Tabelle "Umsatz" von A2 bis zur letzten ausgefüllten Zeile in Spalte O gelöscht werden. Ändere den With Worksheets("Tabelle1")-Befehl zu With Worksheets("Umsatz").

Tipps für Profis

  • Verwendung von Workbook_BeforeClose: Dieser Event-Handler wird vor dem Schließen der Arbeitsmappe aufgerufen, was ihn ideal für das Löschen von Inhalten macht.
  • Mit MsgBox arbeiten: Du kannst die MsgBox so anpassen, dass sie spezifische Informationen anzeigt, um den Benutzer besser zu informieren.
  • Automatisches Speichern: Stelle sicher, dass Du Deine Datei speicherst, bevor Du sie schließt, um Datenverluste zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich die Abfrage anpassen? Du kannst den Text in der MsgBox ändern, um eine spezifischere Frage zu stellen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, der Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionieren, solange Makros aktiviert sind.

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