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.

WichtigWichtig: Nutze Variant- und Objekttyp-Variablen grundsätzlich nur in speziellen Situationen, wo es sich nicht vermeiden lässt.