Ważne: Przestroga Nieprawidłowe edytowanie rejestru może spowodować poważne uszkodzenie systemu operacyjnego wymagające jego ponownej instalacji. Firma Microsoft nie może zagwarantować, że problemy powstałe w wyniku nieprawidłowego edytowania rejestru będzie można rozwiązać. Przed edytowaniem rejestru należy wykonać kopie zapasowe wszystkich ważnych danych. Najnowsze informacje dotyczące używania i ochrony rejestru komputera znajdują się w Pomocy systemu Microsoft Windows.
Ten artykuł zawiera opis składni formuł i zastosowania funkcji WYWOŁAJ, REJESTRUJ oraz REJESTR.KOD w programie Microsoft Excel.
Uwaga: Funkcje WYWOŁAJ i REJESTRUJ nie są dostępne w Excel dla sieci Web.
W tym artykule
Opis
Poniżej opisano typy argumentów i typy danych wartości zwracanych przez funkcje WYWOŁAJ, REJESTRUJ i REJESTR.KOD. Argumenty i zwracane wartości są różne w zależności od środowiska pracy, a różnice są zapisane w tabeli typów danych.
Typy danych
W funkcjach WYWOŁAJ, REJESTRUJ i REJESTR.KOD argument typ_tekst określa typ danych zwracanej wartości i typy danych wszystkich argumentów dla funkcji DLL lub zasobu kodów. Pierwszy znak typ_tekst określa typ danych zwracanej wartości. Pozostałe znaki wskazują typy danych wszystkich argumentów. Na przykład w przypadku funkcji DLL, która zwraca liczbę zmiennoprzecinkową, a jako argumentów wymaga liczb całkowitych i zmiennoprzecinkowych, niezbędne jest użycie wartości "BIB" dla argumentu typ_tekst.
Poniższa tabela zawiera pełną listę kodów typów danych rozpoznawanych przez program Microsoft Excel, opis każdego typu danych, informacje o sposobie przekazywania argumentu lub zwracanej wartości i typową deklarację dla typu danej w języku programowania C.
Kod |
Opis |
Przekazywane przez |
Deklaracja w C |
A |
Wartość logiczna (FAŁSZ = 0, PRAWDA = 1) |
Wartość |
short int |
B |
IEEE 8-bajtowa liczba zmiennoprzecinkowa |
Wartość (Windows)Odwołanie (Macintosh) |
double (Windows)double * (Macintosh) |
C |
Ciąg zakończony wartością zerową (maksymalna długość ciągu = 255) |
Odwołanie |
char * |
D |
Ciąg zliczany według bajtów (pierwszy bajt zawiera długość ciągu, maks. długość ciągu = 255 znaków) |
Odwołanie |
unsigned char * |
E |
IEEE 8-bajtowa liczba zmiennoprzecinkowa |
Odwołanie |
double * |
F |
Ciąg zakończony wartością zerową (maksymalna długość ciągu = 255 znaków) |
Odwołanie (modyfikowanie w miejscu) |
char * |
G |
Ciąg zliczany według bajtów (pierwszy bajt zawiera długość ciągu, maks. długość ciągu = 255 znaków) |
Odwołanie (modyfikowanie w miejscu) |
unsigned char * |
H |
2-bajtowa liczba całkowita bez znaku |
Wartość |
unsigned short int |
I |
2-bajtowa liczba całkowita ze znakiem |
Wartość |
short int |
J |
4-bajtowa liczba całkowita ze znakiem |
Wartość |
long int |
K |
Tablica |
Odwołanie |
FP * |
L |
Wartość logiczna (FAŁSZ = 0, PRAWDA = 1) |
Odwołanie |
short int * |
M |
2-bajtowa liczba całkowita ze znakiem |
Odwołanie |
short int * |
N |
4-bajtowa liczba całkowita ze znakiem |
Odwołanie |
long int * |
O |
Tablica |
Odwołanie |
Przekazywane są trzy argumenty: unsigned short int * unsigned short int * double [ ] |
P |
Struktura danych OPER w programie Microsoft Excel |
Odwołanie |
OPER * |
R |
Struktura danych XLOPER w programie Microsoft Excel |
Odwołanie |
XLOPER * |
Spostrzeżenia
-
Deklaracje języka programowania C opierają się na założeniu, że program kompilujący ma domyślnie ustawione 8-bajtowe liczby zmiennoprzecinkowe o podwójnej precyzji (double), 2-bajtowe liczby całkowite krótkie (short int) i 4-bajtowe liczby całkowite długie (long int).
-
W środowisku programowania Microsoft Windows wszystkie wskaźniki są wskaźnikami odległymi. Na przykład należy zadeklarować kod D typu danych jako unsigned char far * w systemie Microsoft Windows.
-
Wszystkie funkcje w bibliotekach DLL i zasobach kodów są wywoływane za pomocą konwencji wywoływania języka Pascal. Większość programów kompilujących w języku C zezwala na korzystanie z konwencji wywoływania języka Pascal przez dodanie słów kluczowych Pascala do deklaracji funkcji, tak jak w poniższym przykładzie: pascal void main (rows,columns,a)
-
Jeśli funkcja używa typu danych pass-by-reference dla swojej wartości zwracanej, możesz przekazać wskaźnik null jako wartość zwracaną. Program Microsoft Excel zinterpretuje wskaźnik null jako #NUM! wartość błędu #ADR!.
Dodatkowe informacje o typach danych
W tej sekcji przedstawiono szczegółowe informacje o typach danych F, G, K, O, P i R, a także inne informacje o argumencie typ_tekst.
Typy danych F i G
Wykorzystując typ danych F i G, funkcja może zmodyfikować bufor ciągu przydzielony przez program Microsoft Excel. Jeśli kod zwróconej wartości jest typu F lub G, to program Microsoft Excel ignoruje wartości zwrócone przez funkcję. Zamiast tego przeszukuje listę argumentów funkcji do momentu odnalezienia pierwszego odpowiadającego typu danych (F lub G), a następnie przyjmuje za wartość zwróconą bieżącą zawartość przydzielonego buforu ciągu. Microsoft Excel przydziela argumentowi 256 bajtów, więc funkcja może zwrócić dłuższy ciąg niż ciąg wejściowy.
Typ danych K
Typ danych K korzysta ze wskaźnika do struktury danych FP o zmiennym rozmiarze. Strukturę tę należy zdefiniować w bibliotece DLL lub w zasobie kodów w następujący sposób:
typedef struct _FP
{ unsigned short int rows; unsigned short int columns; double array[1]; /* Actually, array[rows][columns] */ } FP;
Deklaracja double array[1] przydziela jedynie miejsce do przechowywania dla jednoelementowej tablicy. Liczba elementów w rzeczywistej tablicy jest równa iloczynowi liczby wierszy i liczby kolumn.
Typ danych O
Typ danych O może być wykorzystany wyłącznie jako argument, a nie jako zwracana wartości. Przekazuje trzy elementy: wskaźnik liczby wierszy w tablicy, wskaźnik liczby kolumn w tablicy i wskaźnik dwuwymiarowej tablicy liczb zmiennoprzecinkowych.
Zamiast zwracać wartość, funkcja może modyfikować tablicę przekazywaną przez typ danych O. W tym celu jako argumentu type_text można użyć argumentu ">O". Aby uzyskać więcej informacji, zobacz sekcję "Modyfikowanie w miejscu — funkcje deklarowane jako nieważne" poniżej.
Typ danych O został utworzony, aby zapewnić bezpośrednią zgodność z bibliotekami FORTRAN DLL, w których argument jest przekazywany za pomocą odwołania.
Typ danych P
Typ danych P jest wskaźnikiem struktury OPER. Struktura OPER zawiera osiem bajtów danych, po których następuje 2-bajtowy identyfikator określający typ danych. W przypadku typu danych P funkcja DLL lub zasobu kodów może pobierać i zwracać dowolny typ danych programu Microsoft Excel.
Struktura OPER jest definiowana następująco:
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;
Pole typu zawiera jedną z następujących wartości:
Typ |
Opis |
Użyte pole wartości |
1 |
Liczba |
num |
2 |
Ciąg (pierwszy bajt zawiera długość ciągu) |
str |
4 |
Boolean (logiczna) |
bool |
16 |
Błąd: wartości błędu to: 0#ZERO! 7#DZIEL/0! 15#ARG! 23#ADR! 29#NAZWA? 36#LICZBA! 42#N/D! |
err |
64 |
Tablica |
array |
128 |
Brakujący argument |
|
256 |
Pusta komórka |
Ostatnie dwie wartości mogą być używane tylko jako argumenty, a nie wartości zwracane. Wartość brakującego argumentu (128) jest przekazywana, gdy obiekt wywołujący pomija argument. Wartość pustej komórki (256) jest przekazywana, gdy obiekt wywołujący odwołuje się do pustej komórki.
Typ danych R — wywoływanie funkcji programu Microsoft Excel z bibliotek DLL
Typ danych R jest wskaźnikiem struktury XLOPER, która jest rozbudowaną wersją struktury OPER. W programie Microsoft Excel w wersji 4.0 i nowszej można wykorzystywać dane typu R do wpisywania bibliotek DLL i zasobów kodów wywołujących funkcje Microsoft Excel. Za pomocą struktury XLOPER funkcja biblioteki DLL, oprócz przekazywania danych, może przekazać odwołania arkusza i implementować sterowanie przepływem. Pełny opis typu danych R oraz interfejsu programowania aplikacji Microsoft Excel (API) wykracza poza zakres tego tematu. Podręcznik Microsoft Office XP Developer's Guide zawiera szczegółowe informacje dotyczące typu danych R, interfejsu Microsoft Excel API oraz wielu innych aspektów technicznych programu Microsoft Excel.
Funkcje nietrwałe i przeliczanie
Microsoft Excel zazwyczaj oblicza funkcję DLL (lub zasobu kodów) wyłącznie po wprowadzeniu jej do komórki, zmianie jednego z jej poprzedników lub obliczeniu komórki za pomocą makra. W arkuszu można ustawić nietrwałą funkcję DLL lub zasobu kodów, co oznacza, że będzie ona obliczana ponownie w przypadku każdego obliczania arkusza. Aby funkcja była nietrwała, należy dodać wykrzyknik (!) jako ostatni znak argumentu typ_tekst.
Na przykład w programie Microsoft Excel dla Windows poniższa formuła arkusza jest obliczana ponownie za każdym razem wraz z arkuszem:
WYWOŁAJ("Kernel32";"GetTickCount";"J!")
Modyfikowanie w miejscu — funkcje deklarowane jako puste
Można użyć pojedynczej cyfry n dla zwróconego kodu typu w argumencie typ_tekst, gdzie n oznacza liczbę od 1 do 9. Sygnalizuje to programowi Microsoft Excel, że należy zmodyfikować zmienną pod adresem wskazanym przez n-ty argument typ_tekst zamiast zwracać wartość. Takie działanie znane jest również pod nazwą modyfikowania w miejscu. N-ty argument powinien być typem danych przekazywanym przez odwołanie (C, D, E, F, G, K, L, M, N, O, P lub R). Funkcja DLL lub zasobu kodów powinna być także zadeklarowana ze słowem kluczowym "void" w języku C (lub słowem kluczowym "procedure" w Pascalu).
Na przykład funkcja DLL pobierająca ciąg zakończony wartością zerową i dwa wskaźniki liczb całkowitych jako argumenty może zmodyfikować ciąg w miejscu. Należy w tym celu użyć "1FMM" jako argumentu typ_tekst i zadeklarować funkcję jako pustą.
Wcześniejsze niż wersja 4.0 wersje programu Microsoft Excel używały znaku > do modyfikowania w miejscu pierwszego argumentu, bo niemożliwe było modyfikowanie innych argumentów. Znak > jest odpowiednikiem n = 1 w programie Microsoft Excel w wersji 4.0 i nowszej.