title image


Smiley kleine Ergänzung
Hallo,IMHO sind in den Klassenmodulen Ereignisse definiert. Das heißt, einem bestimmten Excel-Element ist ein Klassenmodul zugeordnet, in dem die Routinen stehen, die bei einer Änderung des Elementes ausgeführt werden.Wenn man z. B. im VBA-Editor einen Doppelklick auf eine Tabelle ausführt, kann man dann die Routinen eintragen, die bei einer Änderung des Blattes erfolgen sollen. So z. B. SelectionChange (beim Aktivieren einer Zelle) und Change (beim Ändern des Inhaltes einer Zelle).Das Gleiche gilt z. B. für die Userform (u. a. Ereignis Ändern des Inhaltes einer Textbox - Textbox1_Change oder Anklicken einer Schaltfläche - CommandButton1_Click) und für die Mappe.Diese Ereignisprozeduren sind Objekten zugeordnet (z. B. Tabelle, Mappe, Userform). Sie stehen im Klassenmodul des Objektes (hoffentlich habe ich das jetzt richtig formuliert).Manchmal möchte man aber die gesamte Arbeit überwachen, z. B. das Öffnen bestimmter Dateien, das Drucken irgendeiner Datei, das Speichern irgendeiner Datei, ...Dafür gibt es erstmal kein Ereignis, da kein Objekt definiert ist. Deshalb muß man das Objekt, für das die (auf gut deutsch) Überwachung erfolgen soll, erstmal definieren. Nochmal: Wenn alles in Excel überwacht werden soll, muß man das Excel erst beibringen.Dafür gibt es die Klassenmodule, die man über Einfügen - Klassenmodul erzeugt.Auf diesem Klassenmodul bringt man Excel erstmal bei, daß es selbst gemeint ist: die Anwendung. Man definiert also die Application (Excel als Anwendung) als Anwendung (es kann auch ein anderer Name sein), die über Ereignisse verfügt. Das erfolgt auf einem Klassenmodul (Public WithEvents Anwendung As Application). Damit die Anwendung auch erkannt wird, muß es aber mit Excel gleichgesetzt werden. Das heißt, man muß Excel sagen, daß auf dem Klassenmodul (meistens Klasse1, wenn man es nicht ändert) etwas steht, das Excel als Anwendung behandelt. Deshalb schreibt man den Code dafür in ein normales (allgemeines) Modul (siehe Beispiel von Marcus). Nun muß das aber beim Start der Mappe erfolgen - also trägt man den Aufruf am besten in das Open-Ereignis der Mappe ein.Jetzt passiert Folgendes:Die Mappe wird aufgerufen, dadurch wird das Makro zum Anmelden der Klasse1 aufgerufen. Jetzt weiß Excel, daß ein neues Objekt zur Verfügung steht, das sich im Klassenmodul Klasse1 befindet.Das Ganze macht jedoch nur Sinn, wenn es gleich beim Excel-Start geladen wird - zweckmäßigerweise als Add-In oder in der personl.xls, die aber viele Nachteile hat. Stimmt's, Marcus? *g*Viele Grüße und ein schönes WochenendeJörgFragen im Forum, aber wie? - Info's!Fragen zu Excel, Access oder Word?EWAF-FAQ-Seiten und www.joerglorenz.de durchsuchen:Code eingefügt mit Code zu HTML von Jörg Lorenz


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: