Forneça valores padrão para parâmetros opcionais
Você também pode especificar valores padrão para parâmetros opcionais. No exemplo a seguir, se os parâmetros opcionais não forem passados para o procedimento de função, um valor padrão será retornado.
SubListText(xAsString,OpcionalAs_
Inteiro=12345)
Lista1.AddItemx
Lista1.AddItemy
Fim Sub
PRivateSubCommand1_Click()
strName=seunome 'O segundo parâmetro não foi fornecido.
CallListText(strName) 'Adicione "seunome" e "12345".
Fim Sub
Usando um número indeterminado de parâmetros Em geral, o número de parâmetros em uma chamada de procedimento deve ser igual ao número de parâmetros na descrição do procedimento. Você pode usar a palavra-chave ParamArray para indicar que o procedimento aceitará qualquer número de parâmetros. Então você pode escrever a função Sum para calcular a soma assim:
DimxAsInteger
DimyAsInteger
DimintSumAsInteger
SubSoma(ParamArrayintNums())
ForEachxInintNums
y=yx
Próximox
somaint = y
Fim Sub
PrivateSubCommand1_Click()
Soma1,3,5,7,8
List1.AddItemintSum
Fim Sub
Crie instruções simples com parâmetros nomeados
Para muitas funções, instruções e métodos internos, o Visual Basic fornece métodos de parâmetros nomeados para passar rapidamente valores de parâmetros. Para parâmetros nomeados, qualquer número de parâmetros pode ser fornecido em qualquer ordem, atribuindo valores aos parâmetros nomeados. Para fazer isso, digite o argumento nomeado, seguido por dois pontos, um sinal de igual e o valor (MyArgument:=SomeValue). Essas atribuições podem ser organizadas em qualquer ordem, separadas por vírgulas. Observe que a ordem dos parâmetros no exemplo a seguir é oposta à ordem dos parâmetros necessários:
FunctionListText(strNomeAsString,OptionalstrAddressAsString)
List1.AddItemstrNome
List2.AddItemstrAddress
Fim Sub
PrivateSubCommand1_Click()
ListTextstrAddress:=12345,strName:=SeuNome
Fim Sub
O acima é mais útil se o procedimento tiver vários parâmetros opcionais que nem sempre precisam ser especificados.
Confirme o suporte para parâmetros nomeados
Para determinar quais funções, instruções e métodos suportam parâmetros nomeados, use a função AutoQuickInfo na janela Código, verifique o Pesquisador de objetos ou consulte a referência da linguagem. Lembre-se dos seguintes pontos ao usar parâmetros nomeados:
Métodos de objetos na biblioteca de objetos Visual Basic (VB) não oferecem suporte a parâmetros nomeados. Todas as palavras-chave de linguagem na biblioteca de objetos do Visual Basic for Applications (VBA) suportam parâmetros nomeados.
Na sintaxe, os parâmetros nomeados são mostrados em negrito e itálico. Todos os outros parâmetros estão apenas em itálico.
É importante observar que ao usar parâmetros nomeados, você não pode omitir a entrada dos parâmetros necessários. Somente parâmetros opcionais podem ser omitidos. Para bibliotecas de objetos Visual Basic (VB) e Visual Basic for Applications (VBA), a caixa de diálogo Object Browser coloca parâmetros opcionais entre colchetes [].
Consulte ByVal, ByRef, Opcional e ParamArray na referência da linguagem para obter detalhes .
Visão geral da estrutura de controle
Com a estrutura de controle, o fluxo de execução do programa pode ser controlado. Se as instruções de fluxo de controle não forem verificadas, o programa executará essas instruções da esquerda para a direita e de cima para baixo. Alguns programas simples podem ser escritos apenas com fluxo unidirecional e alguns fluxos podem ser controlados pela precedência do operador, mas a eficácia e a utilidade de qualquer linguagem de programação vêm de sua capacidade de alterar a ordem das instruções por meio de estruturas e loops.
estrutura de decisão
Os procedimentos do Visual Basic podem testar expressões condicionais e, em seguida, executar diferentes ações com base nos resultados do teste.
As estruturas de decisão suportadas pelo Visual Basic são:
1.Se...Então
2.Se...Então...Senão
3.SelecionarCaso
Se...Então
Use a estrutura If...Then para executar condicionalmente uma ou mais instruções. Tanto a sintaxe de linha única quanto a sintaxe de bloco multilinha podem ser usadas:
IfconditionThenstatement
SecondiçãoEntão
declarações
FimSe
condição geralmente é uma comparação, mas pode ser qualquer expressão que calcule um valor numérico. O Visual Basic interpreta esse valor como Verdadeiro ou Falso: um valor zero é Falso e qualquer valor diferente de zero é considerado Verdadeiro. Se a condição for True, o Visual Basic executa todas as instruções após a palavra-chave Then. Você pode executar condicionalmente uma instrução usando sintaxe de linha única ou multilinha (os dois exemplos a seguir são equivalentes):
IfanyDate<NowThenanyDate=Agora
IfanyDate<AgoraEntão
anyDate=Agora
FimSe
Nota: O formato de linha única de If...Then não usa a instrução EndIf. Se você deseja executar várias linhas de código quando a condição for True, você deve usar a sintaxe do bloco multilinha If...Then...EndIf.
IfanyDate<AgoraEntão
anyDate=Agora
Timer1.Enabled=False 'O controle do temporizador está desabilitado.
FimSe
Se...Então...Senão
Defina vários blocos de instruções com blocos If...Then...Else e execute uma das instruções:
Secondição1Então
[bloco de declaração-1]
[ElseIfcondition2Then
[bloco de declaração-2]]...
[Outro
[bloco de declaração-n]]
FimSe
O VisualBasic testa primeiro a condição1. Se for False, o Visual Basic testa a condição2 e assim por diante, até encontrar uma condição que seja True. Quando encontra uma condição True, o Visual Basic executa o bloco de instruções correspondente e, em seguida, executa o código seguinte a EndIf. Como opção, você pode incluir um bloco de instrução Else que o Visual Basic executa se nenhuma das condições for True.
If...Then...ElseIf é apenas um caso especial de If...Then...Else. Observe que você pode usar qualquer número de cláusulas ElseIf ou nenhuma. Pode haver uma cláusula Else independentemente de haver uma cláusula ElseIf.
Por exemplo, um aplicativo pode realizar uma ação com base em qual controle em uma matriz de controles de menu é clicado:
PrivateSubmnuCut_Click(IndexAsInteger)
IfIndex=0Then 'Comando "Cortar".
CopyActiveControl 'Chama um procedimento comum.
ClearActiveControl
ElseIfIndex=1Then 'Comando "Copiar".
CopyActiveControl
ElseIfIndex=2Then 'Comando Limpar.
ClearActiveControl
Else 'Comando colar.
ColarAtivoControl
FimSe
Fim Sub
Observe que você sempre pode adicionar mais blocos ElseIf à estrutura If...Then. No entanto, esta estrutura é tediosa de escrever quando cada ElseIf compara a mesma expressão com um valor numérico diferente. Neste caso você pode usar a estrutura de decisão SelectCase.
Para obter informações detalhadas, consulte "Instrução If...Then...Else" no "Manual de referência da linguagem VisualBasic6.0".
SelecioneCaso
VisualBasic fornece a estrutura SelectCase para substituir If...Then...Else, para que um dos vários blocos de instrução possa ser executado seletivamente. Os recursos da instrução SelectCase são semelhantes aos da instrução If...Then...Else, mas no caso de seleções múltiplas, a instrução SelectCase torna o código mais legível.
SelectCase trata uma expressão de teste acima da estrutura e a avalia apenas uma vez. O Visual Basic então compara o valor da expressão com o valor de cada Case na estrutura. Se forem iguais, o bloco de instruções associado ao Case é executado.
SelecioneCasetestexpressão
[Caseexpressionlist1
[bloco de declaração-1]]
[Caseexpressionlist2
[bloco de declaração-2]]
.
.
.
[CasoElse
[bloco de declaração-n]]
Finalizar seleção
Cada lista de expressões é uma lista de um ou vários valores. Se houver vários valores em uma lista, separe os valores com vírgulas. Cada bloco de instruções contém zero ou mais instruções.
Se mais de um Case corresponder à expressão de teste, somente o bloco de instruções associado ao primeiro Case correspondente será executado. Se nenhum valor na lista de expressões corresponder à expressão de teste, o Visual Basic executará a instrução na cláusula CaseElse (isso é opcional).
Por exemplo, suponha que você queira adicionar um comando ao menu Editar no exemplo If...Then...Else. Você pode adicionar uma cláusula ElseIf para isso ou usar SelectCase para escrever uma função:
PrivateSubmnuCut_Click(IndexAsInteger)
SelectCaseIndex
Comando 'Cortar' Case0.
CopyActiveControl 'Chama um procedimento comum.
ClearActiveControl
Case1 'Comando "Copiar".
CopyActiveControl
Case2 'Comando "Limpar".
ClearActiveControl
Case3 'Comando colar.
ColarAtivoControl
CasoElse
frmFind.Show 'Mostra a caixa de diálogo encontrada.
Finalizar seleção
Fim Sub
Observe que a estrutura SelectCase avalia a expressão sempre no início. A estrutura If...Then...Else avalia uma expressão diferente para cada instrução ElseIf. Você poderá substituir uma estrutura If...Then...Else por uma estrutura SelectCase somente se a instrução If e cada instrução ElseIf avaliarem a mesma expressão.
->