Das Archiv des Excel-Forums

Objekt_Error - Ereignis in UserForm

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
TextBox UserForm
Bild

Betrifft: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn

Geschrieben am: 18.02.2008 13:38:58

Hallo VBA-Gemeinde,
folgendes Problem:
Ich habe ein UserForm erstellt und mit viel Beiwerk zum Leben erweckt. Vereinzelt habe ich auch mit On Error Resume Next und GoTo 0 Fehlerroutinen eingefügt.
Nun bin ich gewillt, Fehler, welche dennoch auftreten können, sauber abzufangen, da es sich um ein Serverprojekt mit Mehrfachzugriff handelt.
Also habe ich mich mit dem Objekt_Error-Ereignis befasst und eine entsprechende Routine in einem Modul untergebracht, welche bei dem Error-Ereignis des betreffenden Form-Objekts aufgerufen werden soll.
Wie kann ich nun einen Test durchführen, um zu checken, ob tatsächlich die Geschichte so funzt wie gewollt.
'Err.Raise....' funzt nicht!

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Renee
Geschrieben am: 18.02.2008 13:50:17
Hi Andreas,
Wenn ich dich richtig verstehe willst du einfach einen Fehler provozieren
Also z.B.


Msgbox 10/0


oder doch nicht ?
GreetZ Renée

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn

Geschrieben am: 18.02.2008 13:58:30
Hi Renée,
jetzt zum Test ja.
Ich möchte quasi, wenn bei einem Steuerelement des UserForm ein Fehler zur Laufzeit auftritt, den ich nicht vorhergesehen habe, dass dieser durch eine Routine im Error-Ereignis des entsprechenden Steuerelements abgefangen wird.
Diese Eventualität soll im Vorfeld getestet werden.
Und da hatte ich halt an err.raise gedacht, funzt halt nicht.

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Nepumuk
Geschrieben am: 18.02.2008 14:28:10
Hallo Andreas,
was soll da nicht gehen? Fehler kannst du so produzieren:

Public Sub test1()
    Error (10)
End Sub

Public Sub test2()
    Err.Raise Number:=vbObjectError, Description:="Mein Fehler"
End Sub

Der erste ist ein produzierter excelinterner Fehler mit dem, der entsprechenden Nummer verbundenen Fehlertext, der zweite ein selbst produzierter mit frei wählbarer Nummer und Text.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn

Geschrieben am: 18.02.2008 14:52:11
Danke,
nun ja, ich hatte erwartet, dass automatisch im Fehlerfall das Objekt_Error-Ereignis eintritt.
..ist aber nicht so ???

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Renee
Geschrieben am: 18.02.2008 15:03:54
Hi Andreas,
Also habe ich mich mit dem Objekt_Error-Ereignis befasst und eine entsprechende Routine in einem Modul untergebracht, welche bei dem Error-Ereignis des betreffenden Form-Objekts aufgerufen werden soll.
Dann zeig uns doch mal, wie du das bewerkstelligt hast.
automatisch im Fehlerfall das Objekt_Error-Ereignis
Was heisst automatisch ? On Error goto ? oder was...
GreetZ Renée

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Nepumuk

Geschrieben am: 18.02.2008 15:05:23
Hallo Andreas,
schau dir einfach die Hilfe dazu an. Err-Objekt - Methoden.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn
Geschrieben am: 18.02.2008 15:20:20
Hm..., da muss ich mal die Frage stellen: Wozu benötige ich ein Objekt_Error-Ereignis, wenn es nicht ausgelöst werden kann? Oder, wann tritt denn dieses ein? Das ist in keiner Hilfe in verständlicher Form beschrieben.
Nur mal so:
Wenn sich ein Wert einer Textbox ändert und eine Change-Ereignis-Prozedur für diese existiert, gibt es doch auch eine Reaktion von VBA, die ich im Test vorab kontrollieren kann.

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Nepumuk

Geschrieben am: 18.02.2008 15:25:52
Hallo Andreas,
mir ist nich klar, was du unter einem "Objekt_Error-Ereignis" verstehst.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn
Geschrieben am: 18.02.2008 15:36:03
Ich meine, es gibt in VBA im UserForm-Code Objekte und jeweils Prozeduren dazu. Zu fast jeder Objektart (z.B. TextBox) gibt es eine von VBA mitgebrachte TextBox_Error Prozedur als Ereignis dazu. Wann tritt diese denn nun ein? Ein Change-Ereignis tritt ein, wenn der Wert der Box sich ändert.
Und ein Error-Ereignis???

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Nepumuk

Geschrieben am: 18.02.2008 15:54:09
Hallo Andreas,
es gibt kein "TextBox_Error" - Ereignis. Wenn du z.B. eine falsche Methode auf ein Textbox-Objekt anwendest, dann wird das Err-Objekt mit den verfügbaren Daten (Nummer, Beschreibung, Kontext ...) gefüllt. Hast du in der Prozedur eine Fehlerbehandlungroutine dann wird diese nach Anweisung durchlaufen.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn
Geschrieben am: 18.02.2008 16:02:26
Nehmen wir an, meine Textbox im Formular heißt 'TextBox1', dann stellt VBA im Formularcode eine Ereignisroutine (Sub) TextBox1_Error(...) zur Verfügung. Nun frage ich: Welchen Sinn hat diese Prozedur? - Das habe ich leider noch nicht verstanden.

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Renee

Geschrieben am: 18.02.2008 16:57:25
Hi Andreas,
IMHO werden diese Error-Events nur angesprochen, wenn im internen Code des Controls eine Fehler auftritt. Aus der (englischen) Hilfe:
The code written for the Error event determines how the control responds to the error condition.
The ability to handle error conditions varies from one application to another. The Error event is initiated when an error occurs that the application is not equipped to handle
.
Fehler die im VBA Code auftreten können, müssen über eine On Error Goto Anweisung abgefangen werden.
GreetZ Renée

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn
Geschrieben am: 18.02.2008 17:05:17
Renée,
vielen Dank!
Hatte beim erneuten Durchlesen der deutschsprachigen Erklärung für das Ereignis auch so etwas vermutet.
Wenn Excel/VBA den Fehler einem Code (#) nicht zuordnen kann, wird diese Prozedur ausgeführt.

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Nepumuk

Geschrieben am: 18.02.2008 17:32:12
Hallo Andreas,
entschuldige, dass ich ein bisschen ungenau war, und auch nicht nach dem Error-Ereignis gesehen habe. Hab mich parallel 2 Stunden lang mit WMI rumgeärgert.
Gruß
Nepumuk

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Fred
Geschrieben am: 18.02.2008 14:28:29
Hi,
das ist ein antagonistischer Widerspruch, ein Fehler, den du nicht vorhersen kannst, kann
nicht simuliert werden.
mfg Fred

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: fcs

Geschrieben am: 18.02.2008 14:24:09
Hallo Andreas,
bei mir sieht eine aufwendige Fehlerbehandlung beispielhaft etwa wie folgt aus. Dabei wird immer der Fehler in einer MsgBox angezeigt. Danach folgt dann die Fehlerauswertung via Select Case mit Code, der entweder den Fehler bereinigt, z.B. durch Usereingaben oder sonstige Anweisungen, oder gezielt eine als Private bzw. Public deklarierte Variable setzt, die dann ggf. in weiteren Prozeduren ausgewertet werden kann.
Zusätzlich setze ich ich an kritischen Stellen im Code eine Variable, so dass ich weiss/prüfen kann, in welchem Abschnitt einer Prozedur der Fehler aufgetreten ist.
Zum Testen der Fehlerroutinen: bewußt den Fehler einbauen (z.B. falsche Blattnamen, Variablentypen etc.), der geprüft werden soll.
Mit "On Error Resume Next" sollte man meiner Meinung nach sehr sparsam umgehen, da man nicht nachvollziehen kann (ausser bei schrittweiser Ausführung) wo ein Fehler auftritt und es gibt ggf. nur noch eine chaotisches Ergebnis. Besser ist es im Code an kritischen Stellen entsprechende Prüfungen auf korrekte Input-Daten einzubauen.
Gruß
Franz


Private boFehler as Boolean
Sub aatest()
'Variablendeklarationen etc
Dim Fehler As Integer, wks As Worksheet
On Error GoTo Fehlerbehandlung
Fehler = 1
'Code Teil 1
set wks = Worksheets("Tabelle21")
Fehler = 2
'Code Teil 2
Fehler = 3
'Code Teil 2
GoTo Ende
Fehlerbehandlung:
MsgBox "Fehler-Nr.: " & Err.Number & " ist aufgetreten!" & vbLf & vbLf & Err.Description
Select Case Err.Number
Case 1014
'Anweisungen zur Bereinigung des Fehlers
boFehler = True
Case Else
Select Case Fehler
Case 1
'Code zur Bereinigung des Fehlers
Resume 'Prozedur wird in der Zeile mit dem Fehler fortgesetzt
Case 2
'Code zur Bereinigung des Fehlers
Resume 'Prozedur wird in der Zeile mit dem Fehler fortgesetzt
Case 3
MsgBox "Nach Zeile Fehler = 3 ist der Fehler aufgetreten. Makro wird beendet!"
boFehler = True
GoTo Ende
End Select
End Select
Ende:
'Code, der beim Verlasen der Routine immer ausgeführt werden soll
Set wks = Nothing
Application.ScreenUpdating = True
End Sub



Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: Andreas Zahn
Geschrieben am: 18.02.2008 15:30:16
Danke Franz,
wenn ich dich richtig verstanden habe, muss jede komplexere Prozedur diese Routine erhalten? Oder wie bringe ich VBA dazu, das diese Fehlerbehandlung bei einem nicht vorhersehbaren fehler in Anspruch genommen wird?

Bild

Betrifft: AW: Objekt_Error - Ereignis in UserForm
von: fcs

Geschrieben am: 18.02.2008 15:47:33
Hallo Andreas,
eine Fehlerbehandlung ist immer dann sinnvoll, wenn durch Benutzereingaben oder aus anderen Gründen ein Makro in einen Fehler laufen kann.
Die von mir beschriebene Vorgehensweise erlaubt eine sehr kontrollierte Behandlung und Anzeige von Fehlern und ein kontrolliertes Beenden von Prozeduren ohne das Excel nach Beenden des Makros oder Einschalten des Debug-Modus fragt.
Die "nicht vorhersehbaren" Fehler (außer Excel-Totalaussetzer) werden zumindest mit einer Meldung angezeigt und man kann ggf. noch eingreifen bzw. kontrolliert das Makro beenden.
Gruß
Franz

 Bild

Excel-Beispiele zum Thema "Objekt_Error - Ereignis in UserForm"

Die Ereignisse Zellauswahl, Eingabe und Doppelklick download SVERWEIS als Ereignisprozedur download
Im Change-Ereignis Eingabe in oder Leeren von Zellen erkennen download Makroverzweigung im Change-Ereignis download
ComboBox mit Ereigniscode in Tabellenblatt erstellen download DoubleClick-Ereignis für alle Arbeitsmappen initialisieren download
Begrenzung der Textlänge über Ereignis-Programmierung download Beispiele zum Einsatz des SelectionChange-Ereignisses download
Diagramm in Userform download XL-Dateien in UserForm listen download
UserForm an Excel-Fenster anpassen download Fundstellen in UserForm listen download
Module und UserForms austauschen download In einer Schleife auf Elemente einer UserForm zugreifen download
Werte in eine ComboBox einer UserForm übernehmen download Zellinhalt als Label-Aufschrift in UserForm download
Alle CheckBoxes einer UserForm ansprechen download Wenn kein Eintrag, UserForm nicht schließen download
Aktiven Drucker in UserForm wechseln download Text aus UserForm-Textbox in Variable einlesen download
UserForm in Abhängigkeit einer RefEdit-Auswahl anzeigen download Nur Buchstaben in eine UserForm-TextBox download
Wert in Tabelle suchen und in UserForm ausgeben download Tabellenblatt in UserForm download
Neue UserForm bedingt nach ComboBox-Auswahl aufrufen download Nach Ortsauswahl neue UserForm mit Ortsteilauswahl download
Textfelder in UserForm beim Start vorbelegen download Text aus UserForm in eine Zelle schreiben download
Verhindern des Schließens einer UserForm mittels Schließkreuz download Wert in UserForm-TextBox eintragen und selektieren download
Auf UserForm-CommandButton-Klick eine Internetseite aufrufen download ComboBox-Felder in UserForm aufklappen download
Eingabekontrolle bei UserForm download UserForm-ComboBox-Feld nach Tasteneingabe aufklappen download
Userform in der Entwicklungsumgebung anzeigen download Wert aus 2. UserForm-ComboBox-Spalte berechnen download
CheckBoxes in UserForms in eine Schleife einbinden download Anzahl von CheckBoxes in einer UserForm ermitteln download
Vereinfachte Datumseingabe über UserForm download Auslesen des ausgewählten Optionsfeldes in einer UserForm download
Werte von CheckBoxes in einer UserForm abfragen download Mit Drehfeld durch UserForm-TextBoxes blättern und Daten auslesen download
Mit TextBox-Werten in UserForm rechnen download Datensätze in UserForm auswählen und im Blatt löschen download
Bilder in UserForm und Bildgröße anpassen download Aktuelle Zeit über UserForm eintragen und Rennzeit berechnen download
Werte aus UserForm-TextBox in bestimmten Formate übertragen download UserForm als Fortschrittsanzeige download
AcrobatReader mit *.pdf-Dokument über UserForm starten download Zu einer aufrufenden UserForm zurückkehren download
In einer UserForm Berechnungen aufaddieren download Matrix in UserForm-ListBox einlesen download
Bereichsnamen in UserForm-ListBox auflisten und editieren download Spalte A mehrer Mappen in UserForm und aktives Blatt download
Adressfeld aus UserForm-ComboBox füllen download Ausgewählte Werte aus UserForm-ListBoxes addieren download
Mehrfachauswahl aus UserForm-ListBoxes in Tabelle eintragen download Gruppe von UserForm-ListBoxes über eine Schleife ansprechen download