Wie verwende ich die CallByName-Funktion in VBA?

Die `CallByName`-Funktion in VBA (Visual Basic for Applications) wird verwendet, um zur Laufzeit eine Methode oder Eigenschaft eines Objekts aufzurufen. Diese Funktion ist besonders nützlich, wenn der Name der Prozedur oder Eigenschaft erst zur Laufzeit bekannt ist. Die Syntax für `CallByName` lautet wie folgt:

CallByName(object, procname, calltype, [args()])

Parameter

  • object: Das Objekt, das die Methode oder Eigenschaft enthält, die Sie aufrufen möchten.
  • procname: Der Name der Methode oder Eigenschaft innerhalb des Objekts, die aufgerufen werden soll. Dieser wird als String übergeben.
  • calltype: Ein Wert vom Typ `VbCallType`, der angibt, was aufgerufen werden soll. Die möglichen Werte sind:
    • `vbGet`: Um den Wert einer Eigenschaft abzurufen.
    • `vbLet`: Um den Wert einer Eigenschaft zu setzen.
    • `vbSet`: Um ein Objekt als Eigenschaft zu setzen.
    • `vbMethod`: Um eine Methode aufzurufen.
  • args(): Optional. Ein Array von Variant-Argumenten, die an die Methode oder Eigenschaft übergeben werden.

Beispiel

Angenommen, Sie haben ein einfaches VBA-Modul mit einer Klasse, die eine Methode und eine Eigenschaft enthält:

' Beispielklasse
Class MyClass
    Public Property Let MyProperty(value As String)
        '...
    End Property
    
    Public Property Get MyProperty() As String
        MyProperty = "Hallo"
    End Property
    
    Public Sub MyMethod(param As String)
        MsgBox "Parameter: " & param
    End Sub
End Class

Sie können `CallByName` verwenden, um die Eigenschaft oder Methode dieser Klasse wie folgt zu manipulieren:

Sub TestCallByName()
    Dim obj As New MyClass
    Dim result As String
    
    ' Methode aufrufen
    CallByName obj, "MyMethod", VbCallType.vbMethod, "Testparameter"
    
    ' Eigenschaft setzen
    CallByName obj, "MyProperty", VbCallType.vbLet, "Neuer Wert"
    
    ' Eigenschaft abrufen
    result = CallByName(obj, "MyProperty", VbCallType.vbGet)
    MsgBox "Eigenschaftswert: " & result
End Sub

Hinweise

  • `CallByName` ist besonders nützlich in Szenarien, in denen die spezifische Methode oder Eigenschaft, die Sie verwenden möchten, zur Entwurfszeit nicht bekannt ist, z. B. beim Dynamisieren des Codes auf der Grundlage von Benutzerinteraktionen oder Konfigurationsdaten.
  • Die Performance kann etwas langsamer sein als bei direktem Aufruf der Methode oder Eigenschaft, da zur Laufzeit zusätzliche Auflösung erforderlich ist.

Durch die Verwendung von `CallByName` können Sie flexibel und dynamisch mit Objekten und deren Mitgliedern in VBA arbeiten.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project