User Tools

Site Tools


vba:accessfunctionsinexcel

[VBA] Eval() und Nz() in MS Excel

MS Access kennt den Befehl eval(). Dieser ist ein wenig mächtiger als der Befehl Evaluate(), den es in Ms Excel gibt. Wer auf dem PC MS Access installiert hat, kann den eval() trotzdem brauchen.
Für Nz() funktioniert es gleich

AccessFunctionsInExcel.bas
'/**
' * Private Modul-Variable um das Access-Objekt zu cachen. Wenn man das
' * nicht so macht, dann wird für jeden Eval die Access-Bibliothek erneut geöffnet, was etwa 2 Sekunden beansprucht.
' */
Private acc as Object
 
'/**
' * Führt eval() von MS Access aus.
' * @param	see MS Access Help
' * @return	see MS Access Help
' */
Public Function Eval(ByVal iValue As Variant) As Variant
    If acc Is Nothing Then set acc=createObject("Access.Application")
    Eval = acc.Eval(iValue)
End Function
 
'/**
' * Führt Nz() von MS Access aus.
' * @params	see MS Access Help
' * @return	see MS Access Help
' */
Public Function Nz(ByVal iValue As Variant, Optional ByVal iDefault As Variant = Empty) As Variant
    If acc Is Nothing Then set acc=createObject("Access.Application")
    Nz = acc.Nz(iValue, iDefault)
End Function

Alternative ohne MS Access für Nz()

nz.bas
'/**
' * @params	see MS Access Help
' * @return	see MS Access Help
' */
Public Function Nz(ByVal iValue As Variant, Optional ByVal iDefault As Variant = Empty) As Variant
    If IsObject(iValue) Or IsObject(iDefault) Then
        Set Nz = IIf(IsNull(iValue), iDefault, iValue)
    Else
        Nz = IIf(IsNull(iValue), iDefault, iValue)
    End If
End Function
vba/accessfunctionsinexcel.txt · Last modified: 27.01.2014 11:27:36 (external edit)