Innhald

# CallByName-funksjonen

Kallar opp ein subrutine ved å bruka strengnamnet for rutinen.

### Syntaks:

      CallByName(object As Object, ProcName As String, CallType As Integer [,arg0 [,arg1 …]])

### Returtype:

result: Ein valfri variabel som inneheld resultatet av den oppkalla metoden eller eigenskapen.

### Parametrar:

object: Ein Basic-modul, ein førekomst av eit ClassModule eller ei UNO-teneste med eigenskapar eller metodar.

ProcName: Den Function, Sub eller Property som vart kalla opp.

CallType: Den utførte handlingstypen, som «Get», «Let», «Method» og «Set».

arg0, arg1 …: Dei valfrie Funksjon-parameterane gjevne som posisjonsargument.

Argument er gjevne i nøyaktig same rekkjefølgje som definert i metodesignaturen. Nøkkelordargument er ikkje tillatne.

Verdi | CallType-beskriving
--- | ---
1 | Method: Kallar ein prosedyre som ein funksjon eller ein subrutine.
2 | Get: Les innhaldet i ein eigenskap eller ein variabel.
4 | Let: Tildeler innhald til ein eigenskap eller ein variabel.
8 | Set: Tildeler ein referanseverdi til eit Object eller ein Variant-variabel.

### Eksempel:

1. Ein Calc.Maths-modul inneheld ein Multiply-funksjon som tar ei varierande liste med tal.

2. Informasjon frå ScriptForge.Platform.Architecture er henta.

3. Eigenskapen DisplayDirectory i UNO-tenesta com.sun.star.ui.dialogs.FilePicker er sett til brukaren si heimemappe. Innhaldet vert lese to gongar.

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

          BasicLibraries.loadLibrary("Calc") ' Brukar biblioteksmodulen Calc.Maths
          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-modulen

      Option Compatible ' Calc.Maths-modulen
      Option Explicit

      Public Function Multiply(ParamArray args() As Double) As Variant
          ''' Multipliserer ei variabel liste med tal '''
          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()

Liknande emne

Call-uttrykket

Tenesta ScriptForge.Platform

Option Compatible-uttrykket

Option ClassModule-uttrykket

Støtt oss!