VBA™ para Excel™ 9: Busca, passagem, booleana – uma solução mais inteligente


(ver o anterior)

Continuaremos agora com a forma mais inteligente de resolver o problema da busca, conforme prometido. Para isso, utilizaremos as tais variáveis booleanas. Não se assuste com o nome, trata-se de uma variável simples que aceita apenas dois valores: verdadeiro (true) ou falso (false).

Vamos utilizar o problema anterior, alterando apenas o indicador para uma variável que chamaremos “Achou”. Enquanto a busca não encontrar nada ela será falsa (não achou). A partir do momento que encontrar, será verdadeira.

Const COL_Fornece = 1
Const COL_Prod = 2
Const COL_Quant = 3
Const NUM_Fornece = 10
Const COL_Dados = 5 ‘Nome do produto em questão
Const COL_Proc = 7
Const LIN_Quant = 1
Const LIN_Resp = 3
Const INILIN = 2 ‘Porque a primeira linha é o cabeçalho, não tem dados

Sub BuscaFornecedor()

Dim Proc As String
Dim Resp As String
Dim Atual As String
Dim lin As Integer
Dim Achou As Boolean

‘Fase de inicialização:
lin = INILIN
Proc = Cells(lin, COL_Proc)
Achou = False
Resp = “não encontrada”

Do While Not Achou And lin <= (INILIN + NUM_Fornece – 1)
‘Repare como é mais simples trabalhar com
‘a variável booleana Achou.

Atual = Cells(lin, COL_Prod)

If Atual = Proc Then
Achou = True
Resp = Cells(lin, COL_Fornece)
End If

lin = lin + 1

Loop

Cells(LIN_Resp, COL_Proc) = Resp

End Sub

O teste da variável booleana com NOT é similar à forma como falamos. Nesta Sub testamos com o Do While a condição “não achou” (NOT Achou). Enquanto a rotina não tinha achado, esta condição era verdadeira. A partir do momento em que achou, passou a ser falsa, e a Sub seguiu a sequência que vem após o Loop.

O NOT associado a uma booleana falsa retorna como valor Verdadeiro (True). E NOT associado a uma booleana verdadeira retorna como valor Falso (False).

Captura de tela 2013-11-17 às 10.51.16

Até o próximo tutorial.

Esse post foi publicado em administração, dicas, finanças, jobs, textos e marcado , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Guardar link permanente.

3 respostas para VBA™ para Excel™ 9: Busca, passagem, booleana – uma solução mais inteligente

  1. Pingback: VBA™ para Excel™ 8: Busca e indicadores de passagem, variável booleana | Ricardo Trevisan

  2. Pingback: VBA™ para Excel™ 10: busca linear cumulativa | Ricardo Trevisan

  3. Pingback: VBA™ para Excel™ 14: vetores e matrizes | Ricardo Trevisan

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s