Brug af funktionerne KALD og REGISTRER

Vigtigt: Advarsel!    Hvis du redigerer noget forkert i registreringsdatabasen, kan det beskadige operativsystemet i en sådan grad, at du er nødt til at geninstallere det. Microsoft kan ikke garantere, at de problemer, der opstår som følge af forkert redigering af registreringsdatabasen, kan løses. Før du redigerer registreringsdatabasen, skal du sikkerhedskopiere værdifulde data. Se i Microsoft Windows Hjælp for at få de seneste oplysninger om, hvordan du bruger og beskytter registreringsdatabasen.

I denne artikel beskrives formelsyntaksen for og brugen af funktionerne KALD, REGISTRER og REGISTER.ID i Microsoft Excel.

Bemærk: Funktionerne KALD og REGISTRER er ikke tilgængelige i Excel Online.

I denne artikel

Beskrivelse

Datatyper

Bemærkninger

Flere oplysninger om datatyper

Datatyperne F og G

Datatypen K

Datatypen O

Datatypen P

Datatypen R – kald af Microsoft Excel-funktioner fra DLL-filer

Funktioner, der altid genberegnes, og genberegning

Ændring på positionen – funktioner, der er erklæret ugyldige

Beskrivelse

Nedenfor beskrives de argumenter og returværdidatatyper, der benyttes sammen med funktionerne KALD, REGISTRER og REGISTRER.ID. Argumenter og returværdier kan variere en smule, afhængigt af operativmiljøet. Disse forskelle er anført i tabellen med datatyper.

Toppen af siden

Datatyper

I funktionerne KALD, REGISTRER og REGISTRER.ID angiver argumentet type returværdiens datatype samt datatypen for alle argumenterne i DLL-funktionen eller koderessourcen. Det første tegn i type angiver returværdiens datatype, og de resterende tegn angiver datatypen for de enkelte argumenter. Typeargumentet i en DLL-funktion, der returnerer et tal med flydende komma og tager et heltal og et tal med flydende komma som argumenter, skal f.eks. være "BIB".

Nedenstående tabel indeholder en fuldstændig liste over datatypekoder, der kan anvendes i Microsoft Excel, en beskrivelse af hver datatype, en angivelse af, hvordan argumentet eller returværdien overføres, samt en typisk erklæring til datatypen i programmeringssproget C.

Kode

Beskrivelse

Overføres af

C-erklæring

A

Logisk
(FALSK = 0, SAND = 1)

Værdi

short HELTAL

B

IEEE-tal med flydende komma (8 byte)

Værdi
(Windows)

Reference (Macintosh)

double
(Windows)

double * (Macintosh)

C

Nulafsluttet streng (maksimal længde = 255 tegn)

Reference

char *

D

Byte-talt streng (første byte indeholder strengens længde, maksimal længde = 255 tegn)

Reference

Unsigned char *

E

IEEE-tal med flydende komma (8 byte)

Reference

double *

F

Nulafsluttet streng (maksimal længde = 255 tegn)

Reference (ret på position)

char *

G

Byte-talt streng (første byte indeholder strengens længde, maksimal længde = 255 tegn)

Reference (ret på position)

unsigned char *

H

Heltal uden fortegn (2 byte)

Værdi

unsigned short HELTAL

I

Heltal med fortegn (2 byte)

Værdi

short HELTAL

J

Heltal med fortegn (4 byte)

Værdi

long HELTAL

K

Matrix

Reference

FP *

L

Logisk
(FALSK = 0, SAND = 1)

Reference

short int *

M

Heltal med fortegn (2 byte)

Reference

short int *

N

Heltal med fortegn (4 byte)

Reference

long int *

O

Matrix

Reference

Der overføres tre argumenter:
unsigned short int *
unsigned short int *
double [ ]

P

Microsoft Excel OPER-datastruktur

Reference

OPER *

R

Microsoft Excel XLOPER-datastruktur

Reference

XLOPER *

Toppen af siden

Bemærkninger

  • C-erklæringerne er baseret på, at compilerens standard er 8 byte dobbelt, enkelte heltal på 2 byte og dobbelte heltal på 4 byte.

  • I Microsoft Windows-programmeringsmiljøet er alle pointere fjernpointere. Du skal f.eks. erklære datatypekoden D som unsigned char far * i Microsoft Windows.

  • Alle funktioner i DLL og koderessourcer kaldes ved hjælp af kaldestandarden i Pascal. I de fleste C-compilere kan du bruge Pascal-kaldestandarden ved at tilføje Pascal-nøgleordet i funktionserklæringen som vist nedenfor: pascal void main (rows,columns,a)

  • Hvis en funktion anvender en datatype, der overføres med reference, som returværdi, kan du overføre en nulpointer som returværdi. Nulpointeren fortolkes som fejlværdien #NUM!.

Toppen af siden

Flere oplysninger om datatyper

Dette afsnit indeholder detaljerede oplysninger om datatyperne F, G, K, O, P og R samt oplysninger om argumentet type.

Datatyperne F og G

Med datatyperne F og G kan en funktion ændre en strengbuffer, der er tildelt af Microsoft Excel. Hvis typekoden for returværdien er F eller G, ignoreres den værdi, der returneres af funktionen. I stedet søges der i listen over funktionsargumenter efter den første tilsvarende datatype (F eller G), og det aktuelle indhold af den tildelte strengbuffer anvendes som returværdi. Der tildeles 256 byte til argumentet, så funktionen kan i nogle tilfælde returnere en streng, der er større end den streng, der blev modtaget.

Toppen af siden

Datatypen K

Datatypen K anvender en pointer i en variabel FP-struktur. Denne struktur skal defineres i DLL eller koderessourcen således:

typedef struct _FP
{
unsigned short int rows;
unsigned short int columns;
double array[1]; /* Actually, array[rows][columns] */
} FP;

Erklæringen double array[1] tildeler kun lagerplads til en matrix bestående af et enkelt element. Antallet af elementer i den faktiske matrix er lig med antallet af rækker ganget med antallet af kolonner.

Toppen af siden

Datatypen O

Datatypen O kan kun bruges som argument, ikke som returværdi. Der overføres tre elementer: en pointer til antallet af rækker i en matrix, en pointer til antallet af kolonner i en matrix og en pointer til en todimensional matrix, der indeholder tal med flydende komma.

I stedet for at returnere en værdi, kan en funktion ændre en matrix, der overføres af datatypen O. Hvis du vil gøre dette, skal du bruge ">O" som argumentet type. Yderligere oplysninger finder du under "Ændring på positionen - funktioner, der er erklæret ugyldige" nedenfor.

Datatypen O er oprettet med henblik på direkte kompatibilitet med Fortran DLL, der overfører argumenter ved brug af reference.

Toppen af siden

Datatypen P

Datatypen P er en pointer til en OPER-struktur. OPER-strukturen indeholder 8 byte data efterfulgt af en identifikator på 2 byte, der angiver datatypen. Med datatypen P kan en DLL-funktion eller koderessource tage eller returnere alle Microsoft Excel-datatyper.

OPER-strukturen defineres således:

typedef struct _oper

{
union
{
double num;
unsigned char *str;
unsigned short int bool;
unsigned short int err;
struct
{
struct _oper *lparray;
unsigned short int rows;
unsigned short int columns;
} array;
} val;
unsigned short int type;
} OPER;

Feltet type indeholder en af følgende værdier:

Type

Beskrivelse

Værdifelt, der skal benyttes

1

Numerisk

num

2

Streng (første byte indeholder strenglængden)

str

4

Boolesk (logisk)

bool

16

Fejl: fejlværdierne er:

0#NUL!

7#DIVISION/0!

15#VÆRDI!

23#REFERENCE!

29#NAVN?

36#NUM!

42#I/T

err

64

Matrix

array

128

Manglende argument

256

Tom celle

De sidste to værdier kan kun bruges som argumenter, ikke som returværdier. Værdien "Manglende argument" (128) overføres, når et argument er udeladt i kaldet. Værdien "Tom celle" (256) overføres, når der overføres en reference til en tom celle.

Toppen af siden

Datatypen R – kald af Microsoft Excel-funktioner fra DLL-filer

Datatypen R er en pointer til en XLOPER-struktur, der er en udvidet version af OPER-strukturen. I Microsoft Excel version 4.0 og senere kan datatypen R anvendes til at skrive DLL og koderessourcer, der kalder Microsoft Excel-funktioner. Ved brug af XLOPER-strukturen kan en DLL-funktion overføre arkreferencer og iværksætte flowstyring samt overføre data. Der gives ikke en fuldstændig beskrivelse af datatypen R og Microsoft Excel Application Programming Interface (API) her. Microsoft Office XP Developer's Guide indeholder detaljerede oplysninger om datatypen R, Microsoft Excel API og andre tekniske aspekter af Microsoft Excel.

Toppen af siden

Funktioner, der altid genberegnes, og genberegning

I Microsoft Excel beregnes en DLL-funktion (eller en koderessource) normalt kun, når funktionen eller koderessourcen angives i en celle, når en overordnet funktion eller koderessource ændres, eller når cellen beregnes under kørsel af en makro. I regneark kan du angive, at en DLL-funktion eller en koderessource skal genberegnes, hver gang regnearket genberegnes. Hvis du vil angive, at en funktion altid skal genberegnes, skal du tilføje et udråbstegn (!) som sidste tegn i argumentet type.

I Microsoft Excel til Windows genberegnes følgende regnearksformel, hver gang regnearket genberegnes:

CALL("Kernel32","GetTickCount","J!")

Toppen af siden

Ændring på positionen – funktioner, der er erklæret ugyldige

Du kan anvende et enkelt ciffer n som returtypekode i argumentet type, hvor n er et tal fra 1 til 9. Dette angiver, at variablen på den position, der peges på af det n'te argument i type, skal ændres, og at der ikke skal returneres en værdi. Dette kaldes også for ændring på positionen. Det n'te argument skal være en overføringsreferencetype (C, D, E, F, G, K, L, M, N, O, P eller R). DLL-funktionen eller koderessourcen skal også erklæres med nøgleordet void i C-sproget (eller nøgleordet procedure i Pascal).

En DLL-funktion, der tager en nulafsluttet streng og to pointere til heltal som argumenter, kan ændre strengen på positionen. Brug "1FMM" som argumentet type, og erklær funktionen ugyldig.

I tidligere versioner af Microsoft Excel end version 4.0 har tegnet > været brugt til at ændre det første argument på positionen. De øvrige argumenter kunne ikke ændres. Tegnet > svarer til n = 1 i Microsoft Excel version 4.0 og nyere.

Toppen af siden

Del Facebook Facebook Twitter Twitter Mail Mail

Var disse oplysninger nyttige?

Fantastisk! Har du mere feedback?

Hvordan kan vi forbedre det?

Tak for din feedback!

×