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