Como utilizar a estrutura select case no excel 2016 vba

A estrutura Select Case é uma estrutura VBA útil para decisões que envolvam três ou mais opções no Excel 2016 (embora também trabalha com duas opções, fornecendo uma alternativa para a estrutura If-Then-Else).

Um exemplo Select Case

O exemplo a seguir mostra como usar a estrutura Select Case:

Sub ShowDiscount3 () Quantidade Dim Como LongDim desconto como DoubleQuantity = InputBox ( “Digite a quantidade:“) Select Case QuantityCase 0 Para 24Discount = 0.1Case 25 Para 49Discount = 0.15Case 50 Para 74Discount = 0.2Case é >- = 75Discount = 0.25End SelectMsgBox “Discount“ & DiscountEnd Sub

Neste exemplo, a variável Quantidade está a ser avaliado. As verificações de rotina para quatro casos diferentes (0-24, 25-49, 50-74, e 75 ou mais).

Qualquer número de declarações pode seguir cada instrução Case, e todos eles são executados se o caso é verdadeiro. Se você usar apenas uma instrução, como neste exemplo, você pode colocar a declaração na mesma linha como a palavra-chave Case, precedido por dois pontos - o personagem declaração separador VBA. Isso torna o código mais compacto e um pouco mais clara. Veja como a rotina parece neste formato:

Sub ShowDiscount4 () Quantidade Dim Como LongDim desconto como DoubleQuantity = InputBox ( “Digite a quantidade:“) Select Case QuantityCase 0 a 24: Discount = 0.1Case 25 a 49: Discount = 0.15Case 50 a 74: Discount = 0.2Case é gt; = 75: desconto = 0.25End SelectMsgBox “desconto:“ & DiscountEnd Sub

Quando VBA executa uma estrutura Select Case, a estrutura é encerrado assim que VBA encontra um verdadeiro caso e executa os comandos para esse caso.

Um exemplo Select Case aninhada

Como demonstrado no exemplo a seguir, você pode aninhar Select estruturas caso. Esta rotina examina a célula ativa e exibe uma mensagem descrevendo o conteúdo da célula. Observe que o procedimento tem três Seleccione estruturas de caso, e cada um tem seu próprio End Select declaração:

Sub CheckCell () Dim Msg Como StringSelect Processo EstáVazio (ActiveCell) Caso TrueMsg = “está em branco.” Processo ElseSelect Processo ActiveCell.HasFormulaCase TrueMsg = “tem uma fórmula” Processo ElseSelect Processo IsNumeric (ActiveCell) Caso TrueMsg = “tem um número” Processo ElseMsg = “tem texto” End SelectEnd SelectEnd SelectMsgBox “Cell“ & ActiveCell.Address & ““ & MsgEnd Sub


A lógica é algo como isto:

  1. Descubra se a célula estiver vazia.

  2. Se não estiver vazia, ver se ele contém uma fórmula.

  3. Se não há nenhuma fórmula, descobrir se ele contém um valor numérico ou de texto.

    Video: Excel 2010 VBA Tutorial 16 - Select Case (Switch) Statement

Quando as extremidades de rotina, a variável Msg contém uma cadeia que descreve o conteúdo da célula. A função MsgBox exibe essa mensagem.

A mensagem exibida pelo procedimento CheckCell.
A mensagem exibida pelo procedimento CheckCell.

Você pode aninhar Select estruturas de caso tão profundamente quanto você precisa, mas certifique-se de que cada instrução Select Case tem uma instrução SELECT correspondente End.

Se você ainda não está convencido de que o recuo do código vale a pena o esforço, a listagem anterior serve como um bom exemplo. Os recortes realmente para fazer os níveis de aninhamento clara. Dê uma olhada o mesmo procedimento sem qualquer recuo:

Video: Excel VBA - Select Case

Sub CheckCell () Dim Msg Como StringSelect Processo EstáVazio (ActiveCell) Caso TrueMsg = “está em branco.” Processo ElseSelect Processo ActiveCell.HasFormulaCase TrueMsg = “tem uma fórmula” Processo ElseSelect Processo IsNumeric (ActiveCell) Caso TrueMsg = “tem um número” Processo ElseMsg = “tem texto” End SelectEnd SelectEnd SelectMsgBox “Cell“ & ActiveCell.Address & ““ & MsgEnd Sub

Bastante incompreensível, eh?


Publicações relacionadas