Важно:  Внимание!    Неправильное изменение реестра может привести к серьезному повреждению системы и вызвать необходимость ее переустановки. Корпорация Майкрософт не гарантирует успешного устранения неполадок, вызванных ошибками при редактировании реестра. Перед изменением реестра сохраните архивные копии любых важных данных. Новейшие сведения об использовании и защите реестра вашего компьютера см. в справке Microsoft Windows.

В этой статье описаны синтаксис формулы и использование функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД в Microsoft Excel.

Примечание:  Функции CALL и REGISTER недоступны в Excel в Интернете.

В этой статье

Описание

Ниже описаны аргументы и типы возвращаемых значений функций ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД. Аргументы и возвращаемые значения зависят от операционной среды; эти различия отражены в таблице типов данных.

К началу страницы

Типы данных

В функциях ВЫЗВАТЬ, РЕГИСТРАТОР и РЕГИСТРАТОР.ИД аргумент "типы_данных" задает типы данных возвращаемых значений и всех аргументов для функции библиотеки DLL или кодового ресурса. Первый знак определяет тип данных возвращаемого значения. Остальные знаки указывают типы данных всех аргументов. Например, функция DLL, возвращающая число с плавающей запятой и принимающая целое число и число с плавающей запятой в качестве аргументов, требует в качестве аргумента "типы_данных" строку "BIB".

Приведенная ниже таблица содержит полный список кодов типов данных, распознаваемых Microsoft Excel, описание каждого типа данных и способ передачи значения, а также типичные объявления типов данных в языке программирования C.

Код

Описание

Передается

Объявление в языке C

А

Логическое значение(ЛОЖЬ = 0), ИСТИНА = 1)

Значение

short int

B

8-байтовое число с плавающей запятой

Значение(Windows)

Ссылка (Макинтош)

double(Windows)

double * (Макинтош)

C

Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255)

Ссылка

char *

D

Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)

Ссылка

Unsigned char *

E

8-байтовое число с плавающей запятой

Ссылка

double *

F

Строка, заканчивающаяся кодом 0 (максимальная длина строки = 255 знаков)

Ссылка (изменяется на месте)

char *

G

Строка со счетчиком байтов (первый байт содержит длину строки, максимальная длина строки = 255 знаков)

Ссылка (изменяется на месте)

unsigned char *

H

2-байтовое беззнаковое целое

Значение

unsigned short int

I

2-байтовое целое число со знаком

Значение

short int

J

4-байтовое целое число со знаком

Значение

long int

K

Массив

Ссылка

FP *

L

Логическое значение(ЛОЖЬ = 0, ИСТИНА = 1)

Ссылка

short int *

M

2-байтовое целое число со знаком

Ссылка

short int *

N

4-байтовое целое число со знаком

Ссылка

long int *

O

Массив

Ссылка

Передаются три аргумента:unsigned short int *unsigned short int *double [ ]

P

Структура данных Microsoft Excel OPER

Ссылка

OPER *

R

Структура данных Microsoft Excel XLOPER

Ссылка

XLOPER *

К началу страницы

Замечания

  • Объявления для языка C основаны на предположении, что компилятор использует по умолчанию 8 байт для хранения чисел с двойной точностью, 2 байта — для коротких целых и 4 — для длинных целых.

  • В среде программирования Microsoft Windows все указатели являются дальними. Например, в Microsoft Windows код типа данных D должен быть объявлен как unsigned char far *.

  • При вызове всех функций в библиотеках DLL и кодовых ресурсах используются соглашения о вызове Pascal. Большинство компиляторов C позволяют использовать соглашения о вызове Pascal, добавив ключевое слово pascal в объявление функции, как показано в примере: pascal void main (rows,columns,a)

  • Если функция использует тип данных передачи по ссылке для возвращаемого значения, в качестве возвращаемого значения можно передать пустой указатель. Microsoft Excel интерпретирует пустой указатель как #NUM! (значение ошибки).

К началу страницы

Дополнительные сведения о типах данных

Этот раздел содержит подробную информацию о типах данных F, G, K, O, P и R, а также другие сведения об аргументе "типы_данных".

Типы данных F и G

При работе с типами данных F и G функция может модифицировать буфер строки, выделенный приложением Microsoft Excel. Если код типа возвращаемого значения — F или G, значение, возвращаемое функцией, игнорируется. Вместо этого в списке аргументов функции выполняется поиск первого подходящего типа данных (F или G), и текущее содержимое выделенного буфера строки рассматривается как возвращаемое значение. В приложении Microsoft Excel для аргумента выделяется 256 байт, поэтому возвращаемая функцией строка может оказаться длиннее полученной.

К началу страницы

Тип данных K

Тип данных K использует указатель на структуру FP, имеющую переменную длину. Необходимо следующим образом определить эту структуру в динамической библиотеке или программном ресурсе:

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

Объявление double array[1] выделяет память только для массива, содержащего один элемент. Число элементов в реальном массиве равно числу строк, умноженному на число столбцов.

К началу страницы

Тип данных O

Тип данных O может использоваться только как аргумент, но не как возвращаемое значение. Этот тип передает три элемента: указатель на число строк в массиве, указатель на число столбцов в массиве и указатель на двухмерный массив чисел с плавающей запятой.

Вместо возврата значения функция может изменить массив, переданный типом данных O. Для этого в качестве аргумента type_text можно использовать ">O". Дополнительные сведения см. в разделе Изменение на месте — функции, объявленные как void.

Тип данных O был создан для обеспечения прямой совместимости с динамическими библиотеками Fortran, которые передают аргументы по ссылке.

К началу страницы

Тип данных P

Тип данных P представляет собой указатель на структуру OPER. Структура OPER содержит 8 байт данных, за которыми следует 2-байтовый идентификатор, который определяет тип данных. При работе с типом данных P функция DLL или программный ресурс могут возвращать любой тип данных Microsoft Excel.

Структура OPER определяется следующим образом:

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;

Поле тип содержит одно из следующих значений:

Тип

Описание

Используемое поле в val

1

Число

num

2

Строка (первый байт содержит длину строки)

str

4

Логическое значение

bool

16

Ошибка. Значения ошибок:

0#ПУСТО!

7#ДЕЛ/0!

15#ЗНАЧ!

23#ССЫЛ!

29#ИМЯ?

36#ЧИСЛО!

42#Н/Д

err

64

Массив

массив

128

Пропущенный аргумент

256

Пустая ячейка

Последние два значения могут использоваться только как аргументы, но не как возвращаемые значения. Значение 128 (пропущенный аргумент) передается в том случае, если при вызове опущен какой-либо аргумент. Значение 256 (пустая ячейка) передается в случае ссылки на пустую ячейку при вызове функции.

К началу страницы

Тип данных R — вызов функций Microsoft Excel из библиотек DLL

Тип данных R — это указатель на структуру XLOPER, которая является расширенной версией структуры OPER. В Microsoft Excel 4.0 и более поздних версиях приложения тип данных R можно использовать для создания библиотек DLL и ресурсов кода, которые вызывают функции Microsoft Excel. Используя структуру XLOPER, функции DLL могут передавать ссылки на лист и осуществлять не только передачу данных, но и управление потоком. Полное описание типа данных R и программного интерфейса приложения Microsoft Excel выходит за рамки данного раздела. Подробные сведения о типе данных R, программном интерфейсе Microsoft Excel и многих других технических аспектах этого приложения можно найти в пакете Руководство разработчика Microsoft Office XP.

К началу страницы

Переменные функции и повторные вычисления

Microsoft Excel обычно вычисляет функцию из динамической библиотеки (или программный ресурс) тогда, когда она вводится в ячейку, когда изменяется одна из влияющих ячеек или когда ячейка вычисляется в процессе выполнения макроса. Можно сделать функцию DLL или программный ресурс на листе временными, то есть они будут вычисляться всякий раз, когда пересчитывается лист. Для этого в конец аргумента "типы_данных" надо добавить восклицательный знак (!).

Например, в Microsoft Excel для Windows приведенная ниже формула будет пересчитываться всякий раз, когда будет пересчитываться лист:

ВЫЗВАТЬ("Kernel32","GetTickCount","J!")

К началу страницы

Изменение на месте — функции, объявленные как недействительные

В качестве типа возвращаемого значения в аргументе "типы_данных" можно использовать одну цифру n (от 1 до 9). Это указывает приложению Microsoft Excel на необходимость изменить переменную, указанную аргументом номер n в аргументе "типы_данных", а не возвращать значение. Этот прием иногда называют изменением на месте. Типом n-го аргумента должен быть тип, передаваемый по ссылке (C, D, E, F, G, K, L, M, N, O, P или R). Функция DLL или программный ресурс при работе с языком C должны быть объявлены с ключевым словом void (или, при программировании на языке Pascal, с ключевым словом procedure).

Например, функция DLL, которая получает строку, заканчивающуюся знаком 0, и два указателя на целые числа в качестве аргументов, может отредактировать строку на месте. Используйте "1FMM" в качестве аргумента "типы_данных" и объявите функцию как void.

Версии, предшествующие Microsoft Excel 4.0, использовали символ > для изменения первого аргумента на месте; Невозможно изменить какой-либо аргумент, кроме первого. Символ > эквивалентен n = 1 в Microsoft Excel версии 4.0 и более поздних.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.