Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

1.16 VBA

1.16.1 TempVars

TempVars sind eine Neuerung, die VBA mit Makros verbindet. TempVars ist eine Auflistung, die eines oder mehrere TempVar-Elemente enthält, die - wie der Name schon sagt - Variablen repräsentieren. An folgenden Codebeispielen lässt sich am einfachsten zeigen, was man damit machen kann - die erste Funktion legt eine Variable unter einem bestimmten Namen an, die zweite fragt den Wert einer Variablen ab:

Function SetVar(VarName As String, AValue As Variant)
    TempVars.Add VarName, AValue
End Function

Listing 1.1: Hinzufügen einer temporären Variablen mit dem Namen VarName und dem Wert AValue

Function Getvar(VarName As String) As Variant
    Getvar = TempVarsVarName)
End Function

Listing 1.2: Auslesen der temporären Variablen mit dem Namen VarName

Die TempVars-Auflistung lässt sich mit For Each durchlaufen, um alle enthaltenen Variablen samt Inhalt auszugeben. Interessant ist die TempVars-Auflistung für den Einsatz von Makros. Hier stehen die Makro-Aktionen EntfernenAlleTempvar, EntfernenTempVar und FestlegenTempVar zur Verfügung, um Elemente zur TempVarsAuflistung hinzuzufügen oder zu entfernen. Mit [TempVars]![Variablenname] greifen Sie in VBA und in Makros auf die in der TempVars-Auflistung gespeicherten Werte zu.

Wirklich interessant ist aber, dass TempVars ihren Inhalt auch beim Auftreten von Laufzeitfehlern nicht verlieren und sich leicht serialisieren lassen. Dazu noch drei kleine Beispielcodes:

Function SerializeTempVars(Optional sFile As String, _
    Optional bAdd As Boolean) As Boolean

    Dim vTmp As TempVar
    Dim F As Integer

    On Error GoTo ErrHandler

    If TempVars.Count > 0 Then

        If Len(sFile) = 0 Then sFile = CurrentProject.path & „\Tempvars.dat"
        SetAttr sFile, vbNormal
        F = FreeFile
        DoEvents
        If bAdd Then
            Open sFile For Append As F
        Else
            Open sFile For Output As F
        End If
        For Each vTmp In TempVars
            Write #F, vTmp.name
            Write #F, vTmp.value
        Next vTmp
        Close F
        DoEvents
        SetAttr sFile, vbHidden Or vbReadOnly Or vbSystem
    End If

    SerializeTempVars = True
    Exit Function

ErrHandler:
    Msgbox Err.Description, vbCritical
    Reset
End Function

Function DeSerializeTempVars (Optional sFile As String, Optional bClear _
    As Boolean) As Boolean
    Dim vTmp As Variant
    Dim sName As String
    Dim F As Integer

    On Error GoTo ErrHandler
    If Len(sFile) = 0 Then sFile = CurrentProject.path & „\TempVars.dat"
    F = FreeFile
    Open sFile For Input As F
    If bClear Then TempVars.RemoveAll
    Do While Not EOF(F)
        Input #F, sName
        Input #F, vTmp
        TempVars.Add sName, vTmp
    Loop
    Close F

    DeSerializeTempVars = True
    Exit Function

ErrHandler:
    Msgbox Err.Description, vbCritical

End Function

Function ListVars() As String()
    Dim vVar As TempVar
    Dim arrVars() As String
    Dim i As Long
    ReDim arrVars(TempVars.Count-1)
    For Each vVar In TempVars
        Debug.Print vVar.name
        arrVars(i) = vVar.name
        i = i + 1
    Next vVar
    ListVars = arrVars
    Set vVar = Nothing
    Erase arrVars
End Function

Listing 1.3 Beispiele für das Speichern, Einlesen und Ausgeben von TempVars

Nächster Abschnitt:

1.16.2 VBA in Formularen, Steuerelementen, Berichten und DAO

© 2006-2008 André Minhorst Alle Rechte vorbehalten.