Microsoft Office Tutorials and References
In Depth Information
Jemand will den Wert von C3 nach C5 kopieren und wählt versehentlich den Shortcut
(Strg) + (X) statt (Strg) + (V) und fügt in C5 mit (Strg) + (V) ein. Dadurch wird der
Tabellenaufbau, u.a. der Formelbezug in C7, zerstört. Der Blattschutz ist aktiv und die
Zelle C7 gesperrt, aber gegen eine solch extreme Fehlbedienung ist kein Kraut gewach-
sen (außer Sie unterdrücken die Tastenkombination (Strg) + (X) mit der Applica-
tion.OnKey -Anweisung).
In den allermeisten Fällen werden Sie solche Lücken mit Recht in Kauf nehmen, aus
reiner Aufwand-Nutzen-Abwägung. Sie können schließlich nicht Tausende Excel-
Dateien absichern wie Fort Knox.
Für besonders heikle Dateien bieten aber Userforms die Möglichkeit, Eingaben besser
zu kontrollieren. Bezogen auf obiges Beispiel könnte die direkte Eingabe in die Zellen
C3 und C5 verboten und über die Userform durchgeführt werden. (Wären C3 und C5
gesperrt, wäre ein Ausschneiden von C3 und Einfügen in C5 nicht möglich.)
Dazu kommt, dass auf Ereignisse von Textfeldern oder anderen Steuerelementen in
Userforms viel differenzierter reagiert werden kann als auf Zellen. Zellen selbst
besitzen eigentlich gar keine Ereignisse. Es gibt nur vier Ereignisse von Tabellen, die
mit Zellmanipulationen in Zusammenhang stehen:
Worksheet_Change(ByVal Target As Range) wird ausgelöst, wenn sich irgendein Zell-
wert ändert.
Worksheet_SelectionChange(ByVal Target As Range) wird ausgelöst, wenn sich die
Zellselektion ändert.
Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) wird
bei Doppelklick auf irgendeine Zelle ausgelöst.
Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean) wird bei
Rechtsklick auf irgendeine Zelle ausgelöst.
Die Betonung liegt auf „irgendeine“ .
D.h., das Ereignis gilt grundsätzlich für alle Zellen der Tabelle. Über die Variable Tar-
get erfahren Sie, welche Zelle(n) das Ergebnis ausgelöst hat bzw. haben, und können
individuell darauf reagieren. Das folgende Change -Ereignis macht zum Beispiel Mel-
dung, welche Zelle(n) gerade geändert wurde(n):
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox "Zelle " & Target.Address & " wurde geändert"
End Sub
Search JabSto ::




Custom Search