Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1532to1536
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
Inhaltsverzeichnis

VBA Class Initialisierung mit Fehlerprüfung

VBA Class Initialisierung mit Fehlerprüfung
12.01.2017 16:19:30
Kursawe,
Salve zusammen
Bei der Initialisierung von VBA-Klassen will ich in der Initialize-Methode der class mehrere Anweisungen ausführen.
Ich arbeite gern mit Fehlerprüfungen und Abbruch bei unerwarteten Fehlern.
Hat jemand einen Tip, wie ich bei der initialisierten Klasse einen Fehlercode zurückliefern kann.
Idealerweise würde ich die neu geschaffene Klasse als nothing/null zurückgeben, wenn bei der Initialisierung ein Fehler auftrat. Schaff ich das irgendwie, die Klasse selbst als nothing zurückzugeben?
Beispiel
(Pseudofragmentcode)
class TEST
private xy as double
Private Sub class_initialize()
xy = 2/0
'Dividieren durch 0 liefert ja Fehler
'und hier will ich nun die Klasse als nothing zurückgeben, was ich dann nach
'Neuanlage im eigentlichen Programmcode abfragen kann
End Sub

und ja... in wirklichkeit teil ich nicht durch 0 oder frage den Teiler vorher noch ab, aber das soll ja nur ein hauruck-Beispiel zur Verdeutlichung des Problems sein
Thomas
Zusammengefasst: ich will prüfen können, ob die Initialisierung einer Klasse problemlos funktioniert hat und diese im weiteren Programmverlauf verwendet werden kann

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Class Initialisierung mit Fehlerprüfung
12.01.2017 16:25:46
Kursawe,
...gerade noch den Workaround eingebaut, daß ich der Klasse eine eigene Boolesche Variable mitgebe, die mir mit true/false anzeigt, ob die Initialisierung problemlos gelaufen ist.
Für schönere Lösungen bin ich aber dankbar
AW: VBA Class Initialisierung mit Fehlerprüfung
12.01.2017 17:16:46
Max2
Dafür gibt es On Error Statements
https://msdn.microsoft.com/de-de/library/5hsw66as.aspx
AW: VBA Class Initialisierung mit Fehlerprüfung
12.01.2017 20:58:10
Kursawe,
Danke, aber das ist klar
Solch ein on error Statement hätt ich auch in die Initialisierungsprozedur der Klasse eingebaut.
Und on error hätte ich dann gern nicht eine falsch oder fehlerhaft initialisierte Klasse zurückgegeben - oder noch schlimmer einen Makro-, Programm- oder gar Systemcrash, sondern z.B. ein nothing statt der Klasse.
Frage: wie geb ich beim Aufruf set xy-class = new xyKlasse nicht eine Klasse zurück sondern eine Art nothing, so daß ich dann nach dieser set-Anweisung abfragen kann, ob xy-class valide ist oder z.B. nothing (quasi daß der Check xy-class is nothing die Antwort true liefert, wenn bei der Initialisierung was schief lief)
... aufs erste scheints aber mit meinem Workaround zu funktionieren; gefällt mir nur nicht optimal....
Anzeige
AW: VBA Class Initialisierung mit Fehlerprüfung
13.01.2017 11:01:23
littletramp
Hallo Thomas
Erweitere deine Klasse mit einer boolschen ReadOnly-Eigenschaft, die du nach dem Instanzieren der Klasse abfragst.
Hier der Beispielcode:
Code im Klassenmodul:
Option Explicit
Private mblnIsValid As Boolean
Private Sub class_initialize()
Dim xy As Double
On Error GoTo ErrHandler
xy = 2 / 0     ' -> Error wenn Div/0
mblnIsValid = True
Exit Sub
ErrHandler:
mblnIsValid = False
End Sub
' für IsValid nur Property Get => IsValid ist ReadOnly
Public Property Get IsValid() As Boolean
IsValid = mblnIsValid
End Property

Code in sonstigem Modul:
Sub Test()
Dim class1 As Klasse1
Set class1 = New Klasse1
MsgBox class1.IsValid
Set class1 = Nothing
End Sub
Gruss Markus
Anzeige
AW: VBA Class Initialisierung mit Fehlerprüfung
13.01.2017 21:32:12
Kursawe,
Danke Markus
das war genau auch mein workaround.
Dann war ich zumindest nicht ganz so verkehrt. Hätte nur gehofft, es ginge noch eleganter. Aber eigentlich ist das ja elegant genug :)
Danke Dir!
Thomas

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige