[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:
SUMMEWENNS
ZÄHLENWENNS
alle Funktionen des Add-in "Analyse-Funktionen"
MITTELWERTWENN und MITTELWERTWENNS
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:
einerseits von der eingesetzten Excel Version (ab 2007 stehen die Funktionen allen zur Verfügung)
andererseits vom aktivierten Addin-AnalyseFunktionen (vor 2007 konnten diejenigen auf die Funktionen zugreifen, die das Addin AnalyseFunktionen aktiviert hatten)
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