Artigo: 213277 - Última revisão: quinta-feira, 23 de Novembro de 2006 - Revisão: 3.5

XL2000: 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

Microsoft fornece exemplos de programação ilustração só, sem garantia expressa ou implícita, incluindo, sem limitação, garantias implícitas de comercialização e/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 utilizadas para criar e depurar procedimentos. Profissionais 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.
Se dispõe de limitada experiência de programação, poderá contactar um Microsoft Certified Partner ou a serviços de aviso. Para obter mais informações, visite estes Web sites da Microsoft:

Microsoft certificado Partner - https://partner.microsoft.com/global/30000104 (https://partner.microsoft.com/global/30000104)

Serviços Microsoft aviso - http://support.microsoft.com/gp/advisoryservice (http://support.microsoft.com/gp/advisoryservice)

Para obter mais informações sobre as opções de suporte estão disponíveis e sobre como contactar a Microsoft, visite o seguinte Web site da Microsoft: http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS (http://support.microsoft.com/default.aspx?scid=fh;en-us;cntactms)

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 informações adicionais sobre como obter ajuda com o Visual Basic for Applications, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
226118  (http://support.microsoft.com/kb/226118/EN-US/ ) OFF2000: Recursos de programação do Visual Basic for Applications

Para mais informações sobre matrizes no Visual Basic for Applications, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu de Ajuda escreva utilizar matrizes no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.

A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
Palavras-chave: 
kbmt kbdtacode kbhowto kbprogramming KB213277 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: 213277  (http://support.microsoft.com/kb/213277/en-us/ )