====== [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 '/** ' * 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() '/** ' * @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