[Excel, VBA] fehlende Funktionen in alten Excel-Versionen nachrüsten (nachbilden)

Gepostet am: Jun 01, 2011 10:36:59 PM

Wenn in einem Netzwerk bzw. mehreren Benutzern Dateien ausgetauscht werden, kommt es immer wieder vor, dass unterschiedliche Versionen in Excel zum Einsatz kommen. Das führt dazu, dass bestimmte Funktionen nicht zur Verfügung stehen. Neu sind beispielsweise seit 2007 folgende Funktionen:

Ich möchte hier nur mal die beiden Funktionen ISTGERADE und ISTUNGERADE herausgreifen, und an ihnen exemplarisch demonstrieren, wie man mittels eines Add-Ins diese auch für Versionen unter 2007 (auch ohne installierten "Analyse-Funktionen"-Addin) verwenden kann. 

Funktion ISTGERADE und ISTUNGERADE

Vorerst mal zu den beiden Funktionen:

ISTGERADE

Function ISTGERADE(myZahl As Double) As Boolean     If myZahl Mod 2 = 0 Then         ISTGERADE = True     Else         ISTGERADE = False     End IfEnd Function

ISTUNGERADE

Function ISTUNGERADE(myZahl As Double) As Boolean     If myZahl Mod 2 = 0 Then         ISTUNGERADE = False     Else         ISTUNGERADE = True     End IfEnd Function

Anmerkung: es ginge noch kürzer, aber so sind sie leicht nachvollziehbar

Das sind zwei wirklich einfache Funktionen, die keiner näheren Erklärung benötigen. Wenn man diese beiden Funktionen in als Add-in in Versionen nach 2007 einbindet, existieren diese beiden Funktionen doppelt:

Die Funktionen zur Verfügung stellen, sofern diese noch nicht existieren

Da die doppelte Auflistung der Formeln aber nicht zielführend ist, stellt sich nun die Frage, wie man es schafft, dass die Funktionen nur in Versionen von Excel eingebunden werden, in denen die Funktionen nicht automatisch zur Verfügung stehen. 

Ob die Funktionen automatisch zur Verfügung stehen, hängt von 2 Dingen ab:

nachgerüstete Funktionen

Option Explicit'Diese Funktionen dienen dazu, dass die selben Funktionen, wie unter Excel 2007 auch in früheren Versionen zur Verfüng stehen'Prüfen, ob die Funktionen verwendet werden sollenPublic nachgeruesteteFunktionen As BooleanPublic Sub TestnachgeruesteteFunktionen()     If Application.Version < 11 And Analysefunktionen = False Then         nachgeruesteteFunktionen = True     Else         nachgeruesteteFunktionen = False     End IfEnd Sub'Prüfen, ob das Analyse-Funktionen-Addin aktiviert istPublic Function Analysefunktionen() As Boolean     Dim AF As AddIn     Dim x As Integer     For x = 1 To AddIns.Count     Analysefunktionen = False     Debug.Print AddIns(x).Name         If AddIns(x).Name = "ANALYS32.XLL" Then             If AddIns(x).Installed = True Then                 Analysefunktionen = True             End If         End If     NextEnd Function'--------------- die eigentlichen nachgerüsteten Funktionen#If nachgeruesteteFunktionen = True ThenFunction ISTGERADE(myZahl As Double) As Boolean     If myZahl Mod 2 = 0 Then         ISTGERADE = True     Else         ISTGERADE = False     End IfEnd FunctionFunction ISTUNGERADE(myZahl As Double) As Boolean     If myZahl Mod 2 = 0 Then         ISTUNGERADE = False     Else         ISTUNGERADE = True     End IfEnd Function#End If

Jetzt muss man es nur noch bewerkstelligen, dass die Funktion "TestnachgeruesteteFunktionen" beim Start des Add-ins ausgeführt wird, damit die Variable nachgeruesteteFunktionen widerspiegelt, ob die Funktionen schon vorhanden sind, oder eben nicht.

Dafür fügt man folgenden Quellcode unter Add-in-Name \ Microsoft Excel Objekte \ DieseArbeitsmappe ein:

Autostart

Private Sub Workbook_Open()'Version prüfen u gegebenfalls nachgerüstete Funktionen einbindenCall TestnachgeruesteteFunktionen End Sub