Verwenden von Excel-Tabellenfunktionen in Visual Basic

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

Hinweis

Einige Tabellenfunktionen sind in Visual Basic nicht nützlich. Beispielsweise wird die Concatenate-Funktion nicht benötigt, da Sie in Visual Basic zum Verknüpfen mehrerer Textwerte den &-Operator verwenden können.

Aufrufen einer Tabellenfunktion in Visual Basic

In Visual Basic werden die Excel-Tabellenfunktionen durch das WorksheetFunction-Objekt zur Verfügung gestellt.

Die folgende Sub-Prozedur verwendet die Tabellenfunktion Min, um den niedrigsten Wert in einem Zellbereich zu bestimmen. Zunächst wird die VariablemyRange als Range-Objekt deklariert und dann in Tabelle1 auf den Bereich "A1:C10" festgelegt. Anschließend wird der Variablen answer das Ergebnis der auf myRange angewendeten Min-Funktion zugewiesen. Schließlich wird der Wert von answer 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

Wenn Sie eine Tabellenfunktion verwenden, die einen Bereichsbezug als Argument anfordert, müssen Sie ein Range-Objekt festlegen. Sie können z. B. die Tabellenfunktion Match (Match in VBA) verwenden, um einen Zellbereich zu durchsuchen. In eine Zelle einer Tabelle würden Sie dazu eine Formel wie "=VERGLEICH(9,A1:A10,0)" eingeben. In einer Prozedur in Visual Basic legen Sie jedoch 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

Hinweis

Visual Basic Funktionen verwenden nicht den WorksheetFunction -Qualifizierer. Namen von Funktionen können in Visual Basic und Microsoft Excel zwar identisch sein, aber unterschiedliche Auswirkungen haben. Beispielsweise werden mit Application.WorksheetFunction.Log und Log unterschiedliche Werte zurückgegeben.

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

Beispiel

In diesem Beispiel wird die Tabellenfunktion RMZ (Pmt in VBA) zur Berechnung der Zahlungen für ein Hypothekendarlehen verwendet. Beachten Sie, dass dabei nicht die InputBox-Funktion, sondern die InputBox-Methode verwendet wird, sodass eine Typenüberprüfung durch die Methode möglich ist. Die Static -Anweisungen sorgen dafür, dass in Visual Basic die Werte der drei Variablen erhalten bleiben und beim nächsten Ausführen des Programms als Standardwerte angezeigt werden.

Static loanAmt 
Static loanInt 
Static loanTerm 
loanAmt = Application.InputBox _ 
 (Prompt:="Loan amount (100,000 for example)", _ 
 Default:=loanAmt, Type:=1) 
loanInt = Application.InputBox _ 
 (Prompt:="Annual interest rate (8.75 for example)", _ 
 Default:=loanInt, Type:=1) 
loanTerm = Application.InputBox _ 
 (Prompt:="Term in years (30 for example)", _ 
 Default:=loanTerm, Type:=1) 
payment = Application.WorksheetFunction _ 
 .Pmt(loanInt / 1200, loanTerm * 12, loanAmt) 
MsgBox "Monthly payment is " & Format(payment, "Currency")

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.