Inhoud

# CallByName

Roept een subroutine aan met de naam.

### Syntaxis:

      CallByName(object As Object, ProcedureNaam As String, Type As Integer [,arg0 [,arg1 …]])

### Retourtype:

result: Een optionele variabele voor het resultaat van de aangeroepen methode of de waarde van een eigenschap.

### Parameters:

object: Een Basic module, een instantie van een ClassModule of een UNO-service met eigenschappen en/of methodes.

ProcedureNaam: De Functie, Subroutine of Eigenschap die wordt gebruikt.

CallType: Het type van de uitgevoerde actie, bijvoorbeeld 'Get', 'Let', 'Method' of 'Set'.

arg0, arg1 …: De optionele parameters van de Functie optioneel die als positionele argumenten worden doorgegeven.

Argumenten moeten in dezelfde volgorde vermeld worden als dat ze in de methode zijn gedefinieerd. Er zijn dus geen argumenten op sleutelwoord mogelijk.

Waarde | Beschrijving CallType
--- | ---
1 | Method: Roept een procedure als een functie of als een subroutine aan.
2 | Get: Leest een eigenschap of een variabele.
4 | Let: Kent een waarde toe aan een eigenschap of een variabele.
8 | Set: Kent een waarde toe aan een Object of een Variant variabele met gebruik van een referentie.

### Voorbeeld:

1. Een module Calc.Maths bevat een functie Multiply met een variabel aantal getallen.

2. De informatie van ScriptForge.Platform.Architecture is opgehaald.

3. De eigenschap DisplayDirectory van UNO-service com.sun.star.ui.dialogs.FilePicker is gezet op de map home van de gebruiker, de inhoud ervan wordt twee maal gelezen.

      Sub CallByName_example
          Const _Method = 1, _Get = 2, _Let = 4, _Set = 8

          BasicLibraries.loadLibrary("Calc") ' Calc.Maths user library.module
          Dim cm As Object : cm = Calc.Maths
          MsgBox CallByName(cm, "Multiply", _Method, 3, 45, 1, 89)		' 12015
          MsgBox CallByName(cm, "Multiply", _Method, 1.85e15, 44, 10^8)	' 8.14E+24

          GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
          Dim p As Object : p = CreateScriptService("ScriptForge.Platform")
          MsgBox CallByName(p, "Architecture", _Get) ' 32bit/64bit

          Dim uno As Object : uno = CreateUnoService("com.sun.star.ui.dialogs.OfficeFilePicker")
          Dim fs As Object  : fs  = CreateScriptService("ScriptForge.FileSystem")
          CallByName(uno, "DisplayDirectory", _Let, fs.HomeFolder)
          MsgBox CallByName(uno, "DisplayDirectory", _Get)
          var = CallByName(uno, "getDisplayDirectory", _Get)
      End Sub

### Module Calc.Maths

      Option Compatible ' Module Calc.Maths
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' Vermenigvuldig een variabel aantal getallen '''
          Dim ndx As Integer
          If UBound(args) >= 0 Then
              Multiply = 1.0
              For ndx = 0 To UBound(args)
                  Multiply = Multiply * args(ndx)
              Next ndx
          End If
      End Function 'Calc.Maths.Multiply()

Verwante onderwerpen

Instructie Call

Service ScriptForge.Platform

Instructie Option Compatible

Instructie Option ClassModule