Utilizar as funções CHAMAR e REGISTO

Aplica-se A
Excel para Microsoft 365 Excel para Microsoft 365 para Mac Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 para Mac Excel 2019 Excel 2016 Excel para iPad Excel para iPhone Excel para tablets Android Excel para telemóveis Android

Importante

Atenção Editar incorretamente o registo pode danificar gravemente o seu sistema operativo, o que o obriga a reinstalá-lo. O Microsoft não pode garantir que os problemas resultantes da edição indevida do registo possam ser resolvidos. Antes de editar o registo, faça uma cópia de segurança de quaisquer dados importantes. Para obter as informações mais atuais sobre a utilização e proteção do registo do seu computador, consulte a Ajuda do Microsoft Windows.

Este artigo descreve a sintaxe de fórmula e a utilização das funções CHAMAR, REGISTAR e REGISTO.ID no Microsoft Excel.

Nota

As funções CHAMAR e REGISTAR não estão disponíveis no Excel na Web.

Neste artigo

Descrição

O seguinte descreve os tipos de dados de argumento e valor devolvido utilizados pelas funções CHAMAR, REGISTAR e REGISTER.ID . Os argumentos e os valores devolvidos diferem ligeiramente consoante o seu ambiente operacional e estas diferenças são anotados na tabela de tipo de dados.

Início da Página

Tipos de dados

Nas funções CHAMAR, REGISTAR e REGISTO.ID, o argumento tipo_texto especifica o tipo de dados do valor devolvido e os tipos de dados de todos os argumentos para o recurso de código ou função DLL. O primeiro caráter de tipo_texto especifica o tipo de dados do valor devolvido. Os restantes carateres indicam os tipos de dados para todos os argumentos. Por exemplo, uma função de DLL que devolve um número de vírgula flutuante e que toma um número inteiro e um número de vírgula flutuante como argumentos requer "BIB" para o argumento tipo_texto.

A tabela seguinte contém uma lista completa dos códigos de tipo de dados reconhecidos pelo Microsoft Excel, uma descrição de cada tipo de dados, como é passado o argumento ou o valor devolvido e uma declaração típica para o tipo de dados em linguagem de programação C.

Código Descrição Passado por Declaração C
A Lógica
(FALSO = 0), VERDADEIRO = 1)
Valor inteiro curto
B IEEE - número de vírgula flutuante com 8 bytes Value
(Windows)
Referência (Macintosh)
duplo
(Windows)
double * (Macintosh)
C Cadeia terminada pelo caráter Nulo (tamanho máximo = 255 carateres) Referência cár *
D Cadeia com um número limitado de carateres (o primeiro byte indica o comprimento da cadeia. Tamanho máximo = 255 carateres) Referência caráter sem sinal *
E IEEE - número de vírgula flutuante com 8 bytes Referência duplo *
F Cadeia terminada pelo caráter Nulo (tamanho máximo = 255 carateres) Referência (alterar na posição n) cár *
G Cadeia com um número limitado de carateres (o primeiro byte indica o comprimento da cadeia. Tamanho máximo = 255 carateres) Referência (alterar na posição n) caráter sem sinal *
H Inteiro de dois bytes, sem sinal Valor inteiro curto sem sinal
I Inteiro de 2 bytes com sinal Valor inteiro curto
J Inteiro de 4 bytes com sinal Valor inteiro longo
K Matriz Referência FP *
L Lógica
(FALSO = 0, VERDADEIRO = 1)
Referência inteiro curto *
L Inteiro de 2 bytes com sinal Referência inteiro curto *
M Inteiro de 4 bytes com sinal Referência inteiro curto *
N Matriz Referência São transmitidos três argumentos:
int curto não assinado *
int curto não assinado *
double [ ]
O Estrutura de dados OPER do Microsoft Excel Referência OPER *
P Estrutura de dados OPER do Microsoft Excel Referência OPER *

Início da Página

Observações

  • As declarações em linguagem C assumem que as predefinições do seu compilador são: 8 bytes para duplo, 2 bytes para inteiro curto e 4 bytes para inteiro longo.
  • No ambiente de programação do Microsoft Windows, todos os apontadores são 'far'. Por exemplo, tem de declarar o código do tipo de dados D como unsigned char far * no Microsoft Windows.
  • Todas as funções em DLLs e recursos de código utilizam a convenção Pascal. A maioria dos compiladores C permite-lhe utilizar a convenção pascal ao adicionar a palavra-chave Pascal à declaração de função, conforme mostrado no exemplo seguinte: pascal void main (rows,columns,a)
  • Se uma função utilizar um tipo de dados pass-by-reference para o respetivo valor devolvido, pode transmitir um ponteiro nulo como o valor devolvido. O Microsoft Excel interpretará o ponteiro nulo como o #NUM! .

Início da Página

Informações adicionais sobre tipos de dados

Esta secção contém informação detalhada sobre os tipos de dados F, G, K, O, P e R e outras informações acerca do argumento tipo_texto.

Tipos de dados F e G

Com os tipos de dados F e G, uma função pode alterar uma memória intermédia de cadeia atribuída pelo Microsoft Excel. Se o código do tipo de valor devolvido for F ou G, o Microsoft Excel ignora o valor devolvido pela função. Em vez disso, o Microsoft Excel procura na lista de argumentos da função, o primeiro tipo de dados correspondente (F ou G) e, em seguida, assume o conteúdo atual da memória intermédia da cadeia atribuída como valor devolvido. O Microsoft Excel atribui ao argumento 256 bytes, para que a função possa devolver uma cadeia maior do que a recebida.

Início da Página

Tipo de dados K

O tipo de dados K utiliza um apontador para uma estrutura FP de tamanho variável. Tem de definir esta estrutura na DLL ou recurso de código da seguinte forma:

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

A declaração double array[1] atribui armazenamento apenas a uma matriz de elemento único. O número de elementos na matriz atual é igual ao número de linhas multiplicado pelo número de colunas.

Início da Página

Tipo de dados O

O tipo de dados O pode ser utilizado apenas como um argumento, não como um valor devolvido. Transfere três itens: um apontador para o número de linhas numa matriz, um apontador para o número de colunas numa matriz e um apontador para uma matriz bidimensional de números em vírgula flutuante.

Em vez de devolver um valor, uma função pode modificar uma matriz transmitida pelo tipo de dados O. Para tal, pode utilizar ">O" como argumento type_text. Para obter mais informações, veja "Modifying in Place — Functions Declared as Void" (Modificar no Local — Funções Declaradas como Nulas) abaixo.

O tipo de dados O foi criado para direcionar a compatibilidade com DLLs FORTRAN que transferem argumentos por referência.

Início da Página

Tipo de dados P

O tipo de dados P é um apontador para uma estrutura OPER. A estrutura OPER contém oito bytes de dados, acompanhados por um apontador de dois bytes que especifica o tipo de dados. Com o tipo de dados P, uma função DLL ou recurso de código podem assumir e devolver qualquer tipo de dados do Microsoft Excel.

A estrutura OPER é definida do seguinte modo:

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;

O campo de tipo contém um destes valores.

Tipo Descrição Campo Val a utilizar
1 Numérico núm
2 Cadeia (o primeiro byte indica o comprimento da cadeia) cad
4 Lógico log
16 Erro: os valores são:
0#NULO!
7#DIV/0!
15#Valor!
23#REF!
29#NOME?
36#NÚM!
42#N/D
err
64 Matriz matriz
128 Falta um argumento
256 Célula vazia

Os dois últimos valores só podem ser utilizados como argumentos e não como valores devolvidos. O valor do argumento em falta (128) é transferido quando o autor da chamada omite um argumento. O valor da célula vazia (256) é transferido quando o autor da chamada transfere uma referência para uma célula vazia.

Início da Página

Tipo de dados R — Chamar funções do Microsoft Excel a partir de DLLs

O tipo de dados R é um apontador para uma estrutura XLOPER, uma versão melhorada da estrutura OPER. Na versão 4.0 e posteriores do Microsoft Excel, é possível utilizar o tipo de dados R para escrever DLL e recursos de código que chamam funções do Microsoft Excel. Com a estrutura XLOPER, uma função de DLL pode transferir referências a folhas de cálculo e implementar o controlo do fluxo, além de transferir dados. Uma descrição completa do tipo de dados R e da API Application Programming Interface do Microsoft Excel está para além do âmbito deste tópico. O Microsoft Office XP Developer's Guide contém informações detalhadas sobre o tipo de dados R, a API do Microsoft Excel e muitos outros aspetos técnicos do Microsoft Excel.

Início da Página

Funções voláteis e Recalcular

O Microsoft Excel normalmente só calcula uma função de DLL (ou um recurso de código) ao ser introduzida numa célula quando um dos seus precedentes for alterado ou quando a célula for calculada durante uma macro. Numa folha de cálculo, pode tornar volátil uma função de DLL ou recurso de código, o que significa que ela efetuará o novo cálculo sempre que a folha de cálculo o efetuar também. Para tornar uma função volátil, adicione um ponto de exclamação (!) como o último caráter no argumento tipo_texto.

Por exemplo, no Microsoft Excel para Windows, a fórmula da folha de cálculo seguinte efetua o novo cálculo sempre que a folha de cálculo o efetuar também:

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

Início da Página

Alterar na posição — Funções declaradas como Void

É possível utilizar um único dígito n para o código de tipo de valor a devolver em tipo_texto, onde n é um número de 1 a 9. Assim, é dada ao Microsoft Excel ordem para modificar a variável na localização apontada pelo enésimo argumento em tipo_texto, em vez de devolver um valor. Isto também é conhecido como alteração na posição. O enésimo argumento pode ser um tipo de dados passado por referência (C, D, E, F, G, K, L, M, N, O, P ou R). A função de DLL ou recurso de código também deve ser declarada com a palavra-chave Void em linguagem C (ou com a palavra-chave Procedure na linguagem Pascal)

Por exemplo, uma função de DLL que assuma como argumentos uma cadeia terminada pelo caráter nulo e dois apontadores para inteiros, pode alterar a cadeia numa determinada posição. Utilize "1FMM" como argumento tipo_texto e declare a função como Void.

As versões anteriores ao Microsoft Excel 4.0 utilizaram o > caráter para modificar o primeiro argumento; não havia forma de modificar qualquer argumento que não o primeiro. O > caráter é equivalente a n = 1 na versão 4.0 e posterior do Microsoft Excel.

Início da Página