Explizites Codieren - keine Deftypes
Vermeide Deftype-Statements
Visual Basic kennt folgende DefType-Befehle:
- DefBool
- DefByte
- DefInt
- DefLng
- DefCur
- DefSng
- DefDbl
- DefDec
- DefDate
- DefStr
- DefObj
- DefVar
Wenn man diese Befehle noch nicht kennt, sollte man es dabei belassen. Wer diese Befehle jedoch kennt und vielleicht auch einsetzt, sollte dies zukünftig vermeiden.
Deftype-Befehle werden modulglobal gesetzt und werden auf alle Variablen in einem bestimmten Bereich angewendet, die nicht explizit mit einem Variablentypen deklariert werden.
Beispiel:
Option Explicit DefInt A-K Sub DefTypeCheck() Dim a, l, m As Long Debug.Print VarType(a) '-> 2 = Integer Debug.Print VarType(l) '-> 0 = nicht initialisiert Debug.Print VarType(m) '-> 3 = Long End Sub
- Die Variable a fällt in den Bereich DefInt A-K und wird daher als Integer deklariert.
- Die Variable l fällt weder in den DefInt-Bereich noch wird sie explizit deklariert; es handelt sich also um einen Variant.
- Die Variable m wurde explizit als Longinteger deklariert.
Bereits in diesem simplen Beispiel sieht man die potentiellen Gefahren im Umgang mit den DefType-Deklarationen. Daher sollte man diese Art der impliziten Variablendeklaration ganz aus dem Code verbannen.
Wichtig: Nutze Variant- und Objekttyp-Variablen grundsätzlich nur in speziellen Situationen, wo es sich nicht vermeiden lässt.