Viktig!: Obs! Feil redigering av registret kan føre til alvorlig skade på operativsystemet, slik 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 for nettet.
I denne artikkelen
Beskrivelse
Nedenfor beskrives datatypene argument og returverdi som brukes av funksjonene ANROP, REGISTRER og REGISTER.ID . Argumenter og returverdier varierer noe avhengig av operativmiljøet, og disse forskjellene er angitt i datatypetabellen.
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 * |
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 pass-by-reference-datatype for returverdien, kan du sende en nullpeker som returverdi. Microsoft Excel tolker nullpekeren som #NUM! som feilverdi.
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.
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.
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 O-datatypen. Hvis du vil gjøre dette, kan du bruke «>O» som type_text-argument. Hvis du vil ha mer informasjon, kan du se «Endre på stedet – funksjoner deklarert som ugyldige» nedenfor.
Datatypen O ble laget for å sikre direkte kompatibilitet med dynamiske koblingsbiblioteker i FORTRAN, som videresender argumenter ved hjelp av referanser.
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.
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.
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!")
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".
Versjoner før Microsoft Excel 4.0 brukte det > tegnet til å endre det første argumentet på plass. det var ikke mulig å endre andre argumenter enn det første. Tegnet > tilsvarer n = 1 i Microsoft Excel versjon 4.0 og nyere.