Bruke funksjonene ANROP og REGISTRER

Gjelder for
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016 Excel for iPad Excel for iPhone Excel for Android-nettbrett Excel for Android-telefoner

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, bør 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.

Obs!

Funksjonene ANROP og REGISTRER er ikke tilgjengelige i Excel på nettet.

I denne artikkelen

Beskrivelse

Nedenfor gis en beskrivelse av datatypene for argumenter og resultatverdier som brukes av funksjonene ANROP,REGISTRER og REGISTER.ID . Argumenter og resultatverdier varierer noe avhengig av operativmiljøet, og disse forskjellene 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 Value
(Windows)
Referanse (Macintosh)
dobbelt
(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 *
dobbel [ ]
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 #NUM! som feilverdi.

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 sendes av datatypen O. Dette kan du gjøre ved å bruke O> som det type_text argumentet. Hvis du vil ha mer informasjon, kan du se «Endringer på stedet – funksjoner som er deklarert som Void» nedenfor.

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