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

Sheets löschen, Ereignis?

Forumthread: Sheets löschen, Ereignis?

Sheets löschen, Ereignis?
24.09.2004 10:47:41
Dieter
Guten Morgen an alle Excelianer,
ich tüfftel an folgendem Problem:
wie kann ich feststellen, ob der Anwender eines Workbooks ein oder mehrere Sheets löscht?
Meines Wissens gibt es dazu kein Ereignis?!
Gruß aus den sonnigen Donauauen
Anzeige
AW: Sheets löschen, Ereignis?
Dr.
Verhindere grundsätzlich das Löschen, dann weisst Du auch, dass keins gelöscht wurde. :-)
AW: Sheets löschen, Ereignis?
Dieter
Hallo Dr.
und wie verhindere ich, dass der Anwender ein Sheet killt?
Gruß Dieter
AW: Sheets löschen, Ereignis?
Dr.
Das kommt auf die Schlauheit der Anwender an. Du kannst die Blattschutzfunktion nehmen, die Register ausblenden, die rechte Maustaste deaktivieren...Da gibt es viele Möglichkeiten, aber wenn ein Anwender die nötige kriminelle Energie mitbringt, hat sich das eh.
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
Hallo Dr.
das hat nichts mit der Schlauheit oder mit krimineller Energie zu tun, er darf ja löschen, nur das Programm sollte es merken!!!
AW: Sheets löschen, Ereignis?
Dr.
Ah soooooo. :-) Damit andere Routinen fehlerfrei bleiben. Dann bleint Dir wohl nur der Weg, den Ulf vorgeschlagen hat, nämlich irgendwo ein "Verzeichnis" abzulegen, das periodisch upgedatet und abgeglichen wird.
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
Hallo Dr.
diese Idee hat was, danke,
AW: Sheets löschen, Ereignis?
ypsilon
hi Dieter,
auch beim löschen wird deactivate ausgelöst
jetzt weiss ich aber nicht ob es bei excel 97 schon das ereignis
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
gibt
cu Micha
AW: Sheets löschen, Ereignis?
Sven
Excel gut, VBA gut und dann solch eine Frage?
Gruß Sven
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
Na du Schlaumeier,
dann gib doch mal eine vernünftige Lösung
AW: Sheets löschen, Ereignis?
Ulf
Ganz Recht, da gibts kein Ereignis. Am einfachsten einen API-Timer erstellen, mit dessen
Hilfe du periodisch überwachst, ob sich an der Blattanzahl oder/und den Blattnamen was
geändert hat.
Ulf
AW: Sheets löschen, Ereignis?
ransi
hallo dieter
versuch doch mal so:
Option Explicit
Public anzahlblatt As Integer

Private Sub Workbook_Open()
anzahlblatt = Worksheets.Count
End Sub


Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If anzahlblatt > Worksheets.Count Then MsgBox "Blatt gelöscht"
anzahlblatt = Worksheets.Count
End Sub

ransi
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
Hallo ransi
danke für deinen Beitrag.
Die Sache hat blos einen Haken, der Anwender kann während der Sitzung Sheets hinzufügen und auch löschen.
Nur, das Löschen löst kein Ereignis aus!
Gruß Dieter
AW: Sheets löschen, Ereignis?
Udo
Was soll überhaupt passieren, wenn das Löschen eines Blatts festgestellt wurde?
Udo
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
https://www.herber.de/bbs/user/11258.xls
Hallo Udo
ich glaub, ich muß mal ein Beispiel hochladen,
zur Erklärung:
der Anwender kann, wenn das 1. Blatt voll ist, ein weiteres anfordern usw.
das 1. Blatt hat den Namen "Blatt1", das nächste "Blatt2" usw. Diese Blattnummerierung steht auch rechts oben im Sheet. Desweiteren wird die Endsumme immer auf das letzte Blatt geschrieben.
Problem:
Sollte der Anwender irgendein Blatt, aus welchen Gründen auch immer, löschen, so müßte die Blattbeschriftung(oben rechts im Sheet) und auch die SheetsNamen berichtigt werden, also immer aufsteigend Blatt1, Blatt2 usw. (keine Lücken). Die Endsummenermittlung stellt keine Schwierigkeit dar.
Gruß Dieter
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
sorry, hab vergessen, das Kennzeichen von "noch offen" zu setzen
AW: Sheets löschen, Ereignis?
24.09.2004 16:47:49
Nepumuk
Hallo Dieter,
belege doch die Buttons zum löschen der Tabelle mit einem eigenen Makro. Dann hast du die volle Kontrolle.
Gruß
Nepumuk
AW: Sheets löschen, Ereignis?
Dieter
Hallo Nepumuk
danke für Deinen Beitrag.
Zu diesem Entschluß bin ich auch gekommen, ist nur sehr aufwändig, da ja nicht nur die Standardmenüleiste (ist einfach) umzuprogrammieren ist, sondern bei den jeweiligen Sheets, die evtl. eingefügt werden, der Code für das Ply-Kontextmenü (Menü bei den "Reitern" der Sheets) mitgegeben werden muß. Außerdem darf das "Blatt1" nicht gelöscht werden (nochmal anderer Code).
Ich hatte halt die Hoffnung, irgendeinen schlauen Einfall zu bekommen und nicht, wie einmal geschehen, die doofe Antwort: Excel gut?.
Aber auch solche "Experten" gibts in diesem Forum.
Ich bin aber wirklich froh, dass es auch sehr gute Forumsteilnehmer, du gehörst auf alle Fälle dazu, gibt
Liebe Grüße von der "blauen" Donau
Dieter
Anzeige
AW: Sheets löschen, Ereignis?
24.09.2004 19:16:09
Nepumuk
Hallo Dieter,
der Aufwand ist überschaubar:


Option Explicit
Public Sub Dieters_SET()
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In CommandBars
        For Each myCommandBarControl In myCommandBar.Controls
            Set myCommandBarControl = myCommandBar.FindControl(ID:=847, Recursive:=True)
            If Not myCommandBarControl Is Nothing Then myCommandBarControl.OnAction = "Dieters_Makro"
        Next
    Next
End Sub
Public Sub Dieters_RESET()
    Dim myCommandBar As CommandBar, myCommandBarControl As CommandBarControl
    For Each myCommandBar In CommandBars
        For Each myCommandBarControl In myCommandBar.Controls
            Set myCommandBarControl = myCommandBar.FindControl(ID:=847, Recursive:=True)
            If Not myCommandBarControl Is Nothing Then myCommandBarControl.Reset
        Next
    Next
End Sub
    
Public Sub Dieters_Makro()
    MsgBox "Take your fucking fingers off!", 48, "Don't do this"
End Sub


Gruß
Nepumuk
Anzeige
AW: Sheets löschen, Ereignis?
Dieter
Hallo Nepumuk
Ein ganz dickes DANKE für Deinen Denkanstoss!
Gruß Dieter
AW: Sheets löschen, Ereignis?
ransi
hallo dieter
ich habs mal so probiert:
rechte maus auf tabellenreiter und löschen.
Bearbeiten Blatt löschen.
dann wird doch ein anderes sheet aktiviert.
jetzt kannst du doch wieder worksheets.count vergleichen mit anzahlblatt.
wenn ein blatt über vba mit sheets(i).delete gelöscht wird, wüsste ich nicht wie es gehen könnte.
ransi
Anzeige
;

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