Bruke funksjonene ANROP og REGISTRER

Viktig: Forsiktig!     Feil redigering av registret kan føre til alvorlig skade på operativsystemet og at det må installeres på nytt. Microsoft kan ikke garantere at problemer som oppstår på grunn av feil redigering av registret, kan løses. Før du redigerer registret, må du ta sikkerhetskopi av eventuelle verdifulle data. Hvis du vil ha informasjon om den nyeste informasjonen om hvordan du bruker og beskytter datamaskinen register, kan du se Hjelp for Microsoft Windows.

Denne artikkelen beskriver formelsyntaksen for og bruk av funksjonene ANROP, REGISTRER og REGISTER.ID i Microsoft Excel.

Merknad: ANROP- og REGISTRER-funksjonene er ikke tilgjengelige i Excel Online.

I denne artikkelen

Beskrivelse

Datatyper

Kommentarer

Tilleggsinformasjon om datatyper

Datatypene F og G

Datatypen K

Datatypen O

Datatypen P

Datatypen R – Kall til Microsoft Excel-funksjoner fra dynamiske koblingsbiblioteker (DLL)

Flyktige funksjoner og omberegning

Funksjoner som foretar endringer på stedet og er deklarert Void

Beskrivelse

Nedenfor gis en nærmere beskrivelse av datatypene for argumenter og resultatverdier for funksjonene ANROP, REGISTRER og REGISTRER.ID. Argumenter og resultatverdier varierer noe på grunn av operativmiljøet. Disse ulikhetene går frem av tabellen over datatyper.

Til toppen av siden

Datatyper

I funksjonene ANROP, REGISTRER og REGISTRER.ID angir argumentet type datatypen for resultatverdien og for alle argumentene til funksjonen DLL eller koderessursen. Det første tegnet i argumentet type angir datatypen til resultatverdien. Resten av tegnene viser datatypene for alle argumentene. En DLL-funksjon som for eksempel gir et flyttall som resultat og tar et heltall og et flyttall som argumenter, vil kreve tegnene "BIB" som argumentet type.

Tabellen nedenfor viser en fullstendig liste over de datatypekodene Microsoft Excel gjenkjenner, en beskrivelse av hver enkelt datatype, hvordan argumentet eller resultatverdien blir sendt videre og en typisk deklarasjon for tilsvarende datatype i programmeringsspråket C.

Kode

Beskrivelse

Sendes som

C-deklarasjon

A

Logisk
(USANN = 0), SANN = 1)

Verdi

short int

B

IEEE 8-byte flyttall

Verdi
(Windows)

Referanse (Macintosh)

dobbel
(Windows)

double * (Macintosh)

C

Null-terminert streng (maks. lengde = 255 tegn)

Referanse

char *

D

Byte-talt streng (første byte inneholder lengden på strengen, maks. lengde = 255 tegn)

Referanse

Unsigned char *

E

IEEE 8-byte flyttall

Referanse

double *

F

Null-terminert streng (maks. lengde = 255 tegn)

Referanse (endres på stedet)

char *

G

Byte-talt streng (første byte inneholder lengden på strengen, maks. lengde = 255 tegn)

Referanse (endres på stedet)

unsigned char *

H

2-byte heltall uten fortegn

Verdi

unsigned short int

K

2-byte heltall med fortegn

Verdi

short int

j

4-byte heltall med fortegn

Verdi

long int

K

Matrise

Referanse

FP *

L

Logisk
(USANN = 0, SANN = 1)

Referanse

short int *

M

2-byte heltall med fortegn

Referanse

short int *

B

4-byte heltall med fortegn

Referanse

long int *

O

Matrise

Referanse

Tre argumenter sendes:
unsigned short int *
unsigned short int *
double [ ]

P

Microsoft Excels datastruktur OPER

Referanse

OPER *

R

Microsoft Excels datastruktur XLOPER

Referanse

XLOPER *

Til toppen av siden

Merknader

  • Deklarasjonene i programmeringsspråket C forutsetter at din kompilator har standardverdiene 8-byte double, 2-byte short int og 4-byte long int.

  • I programmeringsmiljøet i Microsoft Windows er alle pekere lik fjernpekere. Du må for eksempel deklarere datatypekode D som unsigned char far * i Microsoft Windows.

  • Alle funksjoner i dynamiske koblingsbiblioteker og koderessurser kalles ved hjelp av anropskonvensjonene i Pascal. De fleste C-kompilatorer tillater at du bruker Pascals anropskonvensjoner ved at du føyer nøkkelordet pascal til deklarasjonen av funksjonen, slik det er vist i eksemplet nedenfor: pascal void main (rows,columns,a)

  • Hvis en funksjon bruker en datatype overført ved referanse, som returverdi, kan du angi en nullpeker som returverdi. Microsoft Excel vil tolke nullpekeren som feilverdien #NUM!.

Til toppen av siden

Tilleggsinformasjon om datatyper

Dette avsnittet inneholder mer detaljert informasjon om datatypene F, G, K, O, P og R samt annen informasjon om argumentet type.

Datatypene F og G

Med datatypene F og G kan en funksjon endre en strengbuffer som er tilordnet av Microsoft Excel. Hvis typekoden til resultatverdien er lik F eller G, vil Microsoft Excel overse verdien som funksjonen returnerer. I stedet vil Microsoft Excel søke i listen over funksjonsargumenter etter den tilsvarende datatypen (F eller G), og deretter ta gjeldende innhold i den tilordnede strengbufferen som returverdi. Microsoft Excel allokerer 256 byte for argumentet, slik at funksjonen kan returnere en lengre streng enn den mottok.

Til toppen av siden

Datatypen K

Datatypen K bruker en peker til en FP-struktur med variabel størrelse. Du bør definere denne strukturen i DLL-en eller koderessursen slik:

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

Deklarasjonen double array[1] tilordner bare lagerplass for en matrise med ett element. Antallet elementer i den faktiske matrisen er lik antallet rader multiplisert med antallet kolonner.

Til toppen av siden

Datatypen O

Datatypen O kan bare brukes som argument, ikke som returverdi. Den sender tre elementer: En peker til antallet rader i en matrise, en peker til antallet kolonner i en matrise og en peker til en todimensjonal matrise med flyttall.

I stedet for å returnere en verdi, kan en funksjon endre en matrise som er oversendt av datatypen O. Du kan gjøre dette ved å bruke > O som argumentet type. Hvis du vil ha mer informasjon om dette, se avsnittet "Funksjoner som foretar endringer på stedet og er deklarert som "void" nedenfor i dette tillegget.

Datatypen O ble laget for å sikre direkte kompatibilitet med dynamiske koblingsbiblioteker i FORTRAN, som videresender argumenter ved hjelp av referanser.

Til toppen av siden

Datatypen P

Datatypen P er en peker til en OPER-struktur. OPER-strukturen inneholder åtte byte med data, fulgt av et kjennemerke på to byte som angir datatypen. Med datatypen P kan en DLL-funksjon eller koderessurs ta imot og gi som resultat hvilken som helst av Microsoft Excels datatyper.

OPER-strukturen defineres slik:

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 inneholder en av disse verdiene.

Type

Beskrivelse

Verdi-felt som brukes

1

Numerisk

tall

2

Streng (første byte inneholder lengden på strengen)

streng

4

Boolsk (logisk)

boolsk

16

Feil: feilverdiene er:

0#NULL!

7#DIV/0!

15#Verdi!

23#REF!

29#NAVN?

36#NUM!

42#I/T

err

64

Matrise

matrise

128

Manglende argumenter

256

Tom celle

De to siste verdiene kan bare brukes som argumenter, ikke som returverdier. Verdien for manglende argument (128) blir oversendt når anroperen utelater et argument. Verdien for tom celle (256) blir oversendt når anroperen sender en referanse til en tom celle.

Til toppen av siden

Datatypen R – Kall til Microsoft Excel-funksjoner fra dynamiske koblingsbiblioteker (DLL)

Datatypen R er en peker til en XLOPER-struktur, som er en forbedret versjon av OPER-strukturen. I Microsoft Excel versjon 4.0 og nyere kan du bruke datatypen R til å skrive DLLer og koderessurser som anroper Microsoft Excel-funksjoner. Med XLOPER-strukturen kan en DLL-funksjon sende arkreferanser og implementere flytkontroll, i tillegg til sende data. En fullstendig beskrivelse av datatypen R og programmeringsgrensesnittet (API) for Microsoft Excel ligger utenfor omfanget av dette emnet. I utviklerhåndboken for Office XP (Microsoft Office XP Developer's Guide) finner du detaljert informasjon om datatype R, Microsoft Excel API og mange andre tekniske aspekter ved Microsoft Excel.

Til toppen av siden

Flyktige funksjoner og omberegning

Microsoft Excel vil normalt bare beregne en DLL-funksjon (eller en koderessurs) når den settes inn i en celle, når en av dens overordnede verdier endres eller når cellen blir beregnet i en makro. I et regneark kan du gjøre en DLL-funksjon eller koderessurs flyktig, noe som betyr at den blir regnet om hver gang regnearket blir regnet om. Du gjør en funksjon flyktig ved å føye til et utropstegn (!) som det siste tegnet i argumentet type.

Følgende regnearkformel vil for eksempel bli omberegnet hver gang regnearket blir omberegnet i Microsoft Excel for Windows:

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

Til toppen av siden

Funksjoner som foretar endringer på stedet og er deklarert Void

Du kan bruke et enkelt siffer n som returtypekode for argumentet type, der n er et tall fra 1 til 9. Dette forteller Microsoft Excel at programmet skal endre variabelen i den posisjonen som det n-te argumentet i type peker på, i stedet for å returnere en verdi. Dette kalles også å endre på stedet. Det n-te argumentet må være en datatype som overføres ved referanse (C, D, E, F, G, K, L, M, N, O, P eller R). Funksjonen DLL eller koderessursen må også deklareres med nøkkelordet void i programmeringsspråket C (eller nøkkelordet procedure i Pascal).

En DLL-funksjon som tar en null-terminert streng og to pekere til heltall som argumenter, kan endre strengen på stedet. Bruk "1FMM" som argumentet type og deklarer funksjonen som "void".

I versjoner før Microsoft Excel 4.0 ble tegnet > brukt til å endre det første argumentet. Det var ikke mulig å endre andre argumenter enn det første. Tegnet > tilsvarer n = 1 i Microsoft Excel versjon 4.0 og nyere.

Til toppen av siden

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Office Insiders

Var denne informasjonen nyttig?

Takk for tilbakemeldingen!

Takk for tilbakemeldingen! Det høres ut som det kan være lurt å sette deg i kontakt med én av våre Office-kundestøtteagenter.

×