Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
488to492
488to492
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Code beim Verlassen eines Worksheets

Code beim Verlassen eines Worksheets
27.09.2004 10:16:21
Torsten
Hallo beisammen,
folgendes Makro würde ich gerne so einrichten, daß es startet, sobald das Worksheet("ENTRYFC") verlassen wird:
Application.ScreenUpdating = False
ActiveSheet.Unprotect "Kennwort"
Range("A5:M523").Select
Selection.Sort Key1:=Range("I5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A5").Select
ActiveSheet.Protect "Kennwort"
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
Application.ScreenUpdating = True
Könnt Ihr mir einen Tip geben? (Mit Worksheet Deactivate funktioniert's nicht)
Vielen Dank im voraus.
Gruß
Torsten

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

Betreff
Datum
Anwender
Anzeige
AW: Code beim Verlassen eines Worksheets
27.09.2004 10:54:32
Oberschlumpf
Hi Torsten
Zuerst einmal...
...mit Worksheet_Deactive wird dann für das aktuelle Tabellenblatt ein Ereignis ausgelöst, wenn Du innerhalb einer Excel-Datei in ein anderes Tabellenblatt wechselst.
Bsp:

Private Sub Worksheet_Deactivate()
MsgBox "test"
End Sub

Gibt die Meldung "Test", wenn ich ein anderes Tabellenblatt anklicke.
Dein Problem könnte darin liegen, dass Dein Code keinen Bezug auf das gewünschte sondern auf das NACH dem Wechsel aktuelle Tabellenblatt nimmt.
Ändere Deinen Code mal um wie folgt:

Application.ScreenUpdating = False
Sheet("ENTRYFC").Unprotect "Kennwort"
Sheet("ENTRYFC").Range("A5:M523").Select
Selection.Sort Key1:=Sheet("ENTRYFC").Range("I5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Sheet("ENTRYFC").Range("A5").Select
Sheet("ENTRYFC").Protect "Kennwort"
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
Application.ScreenUpdating = True

Da ich dieses Bsp nicht getestet habe, empfehle ich Dir, vor Änderung, eine Sicherheitskopie Deiner Datei zu erstellen.
Konnte ich helfen?
Ciao
Thorsten
Anzeige
AW: Code beim Verlassen eines Worksheets
Torsten
Hallo Thorsten,
vielen Dank für Deine Rückmeldung.
nachdem ich Sheet in Sheets geändert habe, bleibt Excel nunmehr an der Stelle:
Sheets("ENTRYFC").Range("A5:M523").Select
hängen, mit der Meldung, daß die Select-Methode auf das Range-Objekt nicht ausgeführt werden kann. Außerdem scheint Excel gerade abgestürtzt zu sein...:-(
Hast Du noch eine Idee?
Gruß
Torsten
AW: Code beim Verlassen eines Worksheets
27.09.2004 12:20:55
Oberschlumpf
Hi Thorsten
Versuch es mal so:

Dim lstrBlattName As String
Application.ScreenUpdating = False
lstrBlattName = ActiveSheet.Name
Sheets("ENTRYFC").Unprotect "Kennwort"
Sheets("ENTRYFC").Select
Range("A5:M523").Select
Selection.Sort Key1:=Range("I5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("A5").Select
Sheet("ENTRYFC").Protect "Kennwort"
Sheets(lstrBlattName).Select
ActiveWindow.ScrollRow = 1
ActiveWindow.ScrollColumn = 1
Application.ScreenUpdating = True

Der Grund der aufgetretenen Fehlermeldung ist, dass ein Bereich nur selektiert werden kann, wenn das dazugehörige Tabellenblatt aktiv ist.
(wie gesagt, ich hatte es nicht getestet :-) )
Und gegen den Absturz hilft vielleicht die Tastenkombi Strg-Pause.
Je nach Quellcode läuft Excel bei einem Fehler in eine Endlosschleife und es sieht so aus, als ob Excel abgestürzt ist. Mit Strg-Pause kann ein fehlerhaftes Makro unterbrochen werden.
Konnte ich denn diesmal helfen?
Ciao
Thorsten
Anzeige
AW: Code beim Verlassen eines Worksheets
ypsilon
hi Thorsten,
ist es nicht einfacher auf dieses unnötige select zu verzichten ?
Sheets("ENTRYFC").Range("A5:M523").Sort Key1:=Sheets("ENTRYFC").Range("I5"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
cu Micha
AW: ereldigt - mT
Torsten
Hi Micha,
zweifellos richtig, Dein Einwand.
Das kommt vom Rekordern ohne nachzubessern :-)
Gruß
Torsten
AW: Code beim Verlassen eines Worksheets
27.09.2004 13:03:27
Oberschlumpf
Hi Micha
Ich wartete nur auf so eine Bemerkung :-)
Ja, Du hast sicher Recht, auf Select etc. verzichten zu können.
Aber...Asche auf mein Haupt...ich übernahm den Code von Thorsten einfach, bzw ergänzte/korrigierte ihn, OHNE zu testen. Deshalb hab ich nich weiter auf die Selects geachtet.
Und nun is der Torsten ohne H ja dank unserer Beider Hilfe glücklich ;-)
Bye
Thorsten
Anzeige
AW: erledigt - mT
Torsten
Hi Thorsten,
ja, sieht gut aus. :-)
Allerdings zuckt Excel beim Verlassen des bewußten Sheets ca. 10 sec. lang, trotz des Screenupdating = False. Merkwürdigerweise stelle ich dieses Phänomen nicht fest, wenn ich das Sortieren über einen Button im Sheet ausführen lasse.
Da ich nicht weiß, ob meine User dann nicht auch anfangen zu zucken, muß ich noch mal überlegen, ob ich Deine Lösung drin lasse oder ob ich die Button-Variante wähle.
Schau'n mer mal.
Zunächst also vielen Dank für Deine Hilfe.
Gruß
Torsten

40 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige