CallByName-funksjonen

Anroper en subrutine ved hjelp av strengnavnet.

Syntaks:


  CallByName(objekt som objekt, ProcName som streng, CallType som heltall [,arg0 [,arg1 …]])

Returverdi:

resultat: En valgfri variabel som inneholder resultatet av den kalte metoden eller egenskapen.

Parametre:

object: A Basic module, ClassModule instance or UNO service holding properties or methods.

ProcName: Funksjonen, Sub eller Property som anropes.

CallType: Typen utført handling som Get, Let, Method og Set.

arg0, arg1 …: Funksjon valgfrie parametere gitt som posisjonsargumenter.

Argumentene er gitt i nøyaktig samme rekkefølge definert i metodesignaturen. Søkeordargumenter er ikke mulige.

Verdi

CallType Beskrivelse

1

Metode: Anroper en prosedyre som en funksjon eller en subrutine.

2

: Leser en egenskap eller variabel-innhold.

4

La: Tildeler et innhold til en Egenskap eller variabel.

8

Sett: Tildeler en referanseverdi til en Objekt eller Variant variabel.


Eksempel:

  1. En Calc.Maths-modul inneholder en Multiply-funksjon som forventer en varierende liste med tall.

  2. ScriptForge.Platform.Architecture informasjon er hentet.

  3. DisplayDirectory property of com.sun.star.ui.dialogs.FilePicker UNO service is set to the user home folder, its content is read twice.


  Sub CallByName_example
      Const _Method = 1, _Get = 2, _Let = 4, _Set = 8
  
      BasicLibraries.loadLibrary("Calc") ' Calc.Maths brukerbibliotek.modul
      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

Calc.Maths-modul


  Alternativ kompatibel ' Calc.Maths-modul
  Option Explicit
  
  Public Function Multiply(ParamArray args() As Double) As Variant
      ''' Multipliser en variabel liste med tall '''
      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()