Microsoft Excel

Excel und VBA: Formeln, Programmierung, Lösungen

Die Excel/VBA-Beispiele

VBA-Begriff: Verwenden von Microsoft Excel-Tabellenfunktionen in Visual Basic

Sie können die meisten Microsoft Excel-Tabellenfunktionen in Ihren Visual Basic-Anweisungen verwenden. Eine Liste der verwendbaren Tabellenfunktionen finden Sie unter Liste der in Visual Basic verfügbaren Tabellenfunktionen.

Anmerkung   Einige Tabellenfunktionen sind in Visual Basic nicht verwendbar. Zum Beispiel wird die VERKETTEN-Funktion nicht gebraucht, da Sie in Visual Basic zum Verknüpfen mehrerer Textwerte den &-Operator verwenden können.

Aufrufen einer Tabellenfunktion aus Visual Basic

In Visual Basic werden die Microsoft Excel-Tabellenfunktionen durch das WorksheetFunction-Objekt zur Verfügung gestellt. Benutzen Sie hier den englischen Namen der Tabellenfunktion und Ihre Argumente.

Die folgende Sub-Prozedur verwendet die Tabellenfunktion Min, um den niedrigsten Wert in einem Zellbereich zu bestimmen. Zunächst wird die Variable myRange als ein Range-Objekt deklariert und dann auf den Bereich A1:C10 in Tabelle1 festgelegt. Anschließend wird der Variablen answer das Ergebnis der auf myRange angewendeten Funktion Min zugewiesen. Der Wert von answer wird dann in einem Meldungsfeld angezeigt.

Sub UseFunction()
    Dim myRange As Range
    Set myRange = Worksheets("Sheet1").Range("A1:C10")
    answer = Application.WorksheetFunction.Min(myRange)
    MsgBox answer
End Sub

Verwenden Sie eine Tabellenfunktion, die einen Bereichsbezug als Argument fordert, so müssen Sie ein Range-Objekt festlegen. Sie können z. B. die Tabellenfunktion VERGLEICH (Match in VBA) verwenden, um einen Zellbereich zu durchsuchen. In eine Zelle eines Tabellenblatts würden Sie dazu eine Formel wie =VERGLEICH(9,A1:A10,0) eingeben. In einer Prozedur in Visual Basic jedoch legen Sie ein Range-Objekt fest, um das gleiche Ergebnis zu erhalten.

Sub FindFirst()
    myVar = Application.WorksheetFunction _
        .Match(9, Worksheets(1).Range("A1:A10"), 0)
    MsgBox myVar
End Sub

Anmerkung   Der Kennzeichner WorksheetFunction wird von den Funktionen in Visual Basic nicht verwendet. Namen von Funktionen können in Visual Basic und Microsoft Excel zwar identisch sein, jedoch unterschiedliche Auswirkungen haben. Zum Beispiel geben Application.WorksheetFunction.Log und Log unterschiedliche Werte zurück.

Einfügen einer Tabellenfunktion in eine Zelle

Um eine Tabellenfunktion in eine Zelle einzufügen, geben Sie die Funktion als Wert der Formula-Eigenschaft des entsprechenden Range-Objekts an. Im folgenden Beispiel wird die Tabellenfunktion ZUFALLSZAHL (RAND in VBA) der Formula-Eigenschaft des Bereichs A1:B3 in Tabelle1 der aktiven Arbeitsmappe zugewiesen.

Sub InsertFormula()
    Worksheets("Sheet1").Range("A1:B3").Formula = "=RAND()"
End Sub