Artigo: 151582 - Última revisão: quarta-feira, 11 de Outubro de 2006 - Revisão: 2.3

Métodos para utilizar personalizado funções com argumentos de variável

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Utilizar o Microsoft Excel, pode criar funções definidas pelo utilizador que podem ser chamadas a partir de uma folha de cálculo. Estas funções aceitam argumentos as chamadas de função que podem ser qualquer tipo. Por vezes, precisa de conseguir passar uma quantidade variável de argumentos para a função, dependendo da situação.

Chamadas de função no Microsoft Visual Basic for Applications podem aceitar um número variável de argumentos, utilizando um dos três métodos. Cada método tem as suas próprias limitações e utiliza pode ser aplicado apenas em determinadas situações.

As macros e funções seguintes demonstram cada método utilizando uma tarefa comum--somar uma quantidade variável de números e devolver os resultados.

Mais Informação

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador.

Método 1: Palavra O ParamArray chave

Utilizar a palavra-chave ParamArray, a função pode aceitar qualquer número de argumentos, que são armazenadas na tabela que se segue a palavra-chave ParamArray. Por exemplo, conforme mostrado no seguinte procedimento Sub, Testit, cinco argumentos são enviados para a função, cada um deles colocados para a matriz nums com um número de índice separado. Em seguida, o limite superior da matriz nums encontra-se utilizar o Microsoft Visual Basic para aplicações função, UBOUND, que devolve o maior índice disponível para uma matriz que lhe é transferida. No exemplo seguinte, porque ParamArray é preenchido com cinco argumentos, n = 5, ParamArray sempre é uma matriz de variantes; não pode ser declarada como qualquer outro tipo.
   Option Base 1

   Function sumit(ParamArray nums() As Variant)

      n = UBound(nums()) ' Finds the number of arguments passed to
                        ' the function.

      For x = 1 To n
         sumit = sumit + nums(x)
      Next              ' Adds each of the arguments into the total sum.

   End Function

   Sub testit()

      MsgBox sumit(1, 2, 3, 4, 5)

   End Sub
				

Método 2: Palavra O opcional chave

A palavra-chave opcional deve ser utilizada em situações onde não existe um limite superior do número de argumentos que vão ser transmitido. Por exemplo, se o número máximo de argumentos para uma função não vai exceder três ou quatro, pode utilizar a palavra-chave opcional em conjunto com a função ISMISSING. Função ISMISSING devolve VERDADEIRO ou FALSO, dependendo do que os argumentos foram transmitidos para a função. Os argumentos que utilize a palavra-chave opcional tem sempre de ser declarados como variante.
   Function sumit(t1 As Integer, Optional t2 As Variant, Optional t3 As _
      Variant) As Integer

      Select Case IsMissing(t2) And IsMissing(t3)
         ' Depending on what arguments were passed, the Select Case returns
         ' the sum of the arguments that were present.
         Case True
            sumit = t1   ' Only t1 was passed.
         Case False
            If IsMissing(t2) Then
               sumit = t1 + t3   ' Only t1 and t3 were passed, not t2.
            Else
               If IsMissing(t3) Then
                  sumit = t1 + t2 ' Only t1 and t2 were passed, not t3.
               Else
                  sumit = t1 + t2 + t3 ' All of the arguments were passed.
               End If
            End If
      End Select
   End Function

   Sub test1()
      MsgBox sumit(4, 5, 6)
   End Sub
				

Método 3: Utilizar variáveis públicas

Também é possível, mas não recomendado, deve utilizar variáveis com um âmbito público como "argumentos" de uma função definida pelo utilizador. Utilizar variáveis públicas como entradas para uma função não é igual a passar argumentos; a função chamada não inclui os argumentos próprios; estarem acessíveis para todas as funções do livro. Este método vai funcionar, mas uma vez que todos os procedimentos no livro têm acesso a estas variáveis, é possível que terão valores indesejáveis.
   Public arg1 As Integer
   Public arg2 As Integer
   Public arg3 As Integer
   ' These variables use less of the computer's internal memory for storage
   ' space than the Variant data types created in the preceeding macros

   Function sumit()

      sumit = arg1 + arg2 + arg3

   End Function

   Sub test()
      arg1 = 1
      arg2 = 2
      arg3 = 3
      MsgBox sumit
   End Sub
				
cada um destes métodos funcione em todos os casos, mas cada um deles irá trabalhar mais eficientemente do que os outros em determinadas situações. Por exemplo, utilizando uma matriz no Visual Basic for Applications será sempre mais eficiente do que utilizar variáveis individuais. Tem de ser ponderada contra o código adicional que tem ser colocado numa macro para percorrer o ParamArray. Além disso, utilizar o ParamArray para conter os argumentos tende a diminuir a legibilidade do código, porque é impossível indicar que argumentos foram passados sem ciclo através da matriz.

Em termos de espaço de memória, método 3 utiliza o valor mínimo de armazenamento. O tipo de dados variante utilizado no Visual Basic for Applications irá aceitar qualquer dos tipos suportados dados e fazer automaticamente a conversão para o tipo de dados correctos internamente. No entanto, uma vez que tem de acomodar vários tamanhos de armazenamento diferente, tipos de dados variante utilizam 16 bytes de espaço de armazenamento na memória. Uma vez que tanto a palavra-chave opcional a palavra-chave ParamArray devem utilizar variantes como respectivo tipo de dados, atribuirá muito mais espaço na memória do que simplesmente não utilizar argumentos e declarar variáveis públicas do tipo correcto. Por exemplo, se tem uma função como entrada quatro ou cinco inteiros, se declarar variáveis públicas quatro ou cinco e atribuir números aos mesmos, o espaço de armazenamento total necessário só seriam bytes de 8 a 10 por oposição a 64 bytes 80 utilizando as palavras-chave opcional ou ParamArray. Utilizar variáveis públicas, como é mostrado no método 3 não é recomendada porque estas não são transmitidas para a função; apenas referidos. Além disso, utilizar variáveis públicas como entradas para uma função não introduz-los no Assistente de função. A função definida pelo utilizador terão sem argumentos listados no Assistente de função.

Referências

Para obter mais informações sobre funções personalizadas, consulte o seguinte artigo na base de dados de conhecimento da Microsoft:
112321  (http://support.microsoft.com/kb/112321/EN-US/ ) Se utiliza o argumento opcional número inteiro a falha de macro com XL5: Tipo de dados

A informação contida neste artigo aplica-se a:
  • Microsoft Excel 97 Standard Edition
  • Microsoft Excel 95 Standard Edition
  • Microsoft Excel 5.0 Standard Edition
  • Microsoft Excel 98 para Macintosh
Palavras-chave: 
kbmt kbdtacode kbhowto kbprogramming KB151582 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 151582  (http://support.microsoft.com/kb/151582/en-us/ )
Retired KB ArticleExclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.