Nos exemplos nós temos busca definida por apenas um item, que seria a localidade. Mas se quisermos fazer com dois itens, localidade e plano, teria como? Tipo, gostaria que apenas cidade X com plano Y fosse pintada.
Nos exemplos nós temos busca definida por apenas um item, que seria a localidade. Mas se quisermos fazer com dois itens, localidade e plano, teria como? Tipo, gostaria que apenas cidade X com plano Y fosse pintada.
Olá Marcio!
Sim, é possível e seria necessário apenas três alterações no código.
Conforme foi visto em aula tem-se a Sub abaixo:
Sub exemplo_For()
Dim cidade As String
Dim tot_seg As Integer
Dim total_val As Double
Dim linha As Integer
cidade = InputBox("Digite a Cidade a ser Consultada")
'absoluta
Range("a6:g67").Interior.ColorIndex = 19
'relativa
Range("a6").Select
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Interior.ColorIndex = 19
'para variavel comecando em 6 até 36 - executar comandos
For linha = 6 To 36
If UCase(Cells(linha, 2)) = UCase(cidade) Then
Range(Cells(linha, 1), Cells(linha, 7)).Interior.ColorIndex = 24
tot_seg = tot_seg + 1
tot_val = tot_val + Cells(linha, 7)
Debug.Print "TOT_Seg - " & tot_seg
Debug.Print tot_val
End If
Next
Range("a6").Select
MsgBox "Total de Segurados em " & cidade & " - " & tot_seg & vbCrLf & _
"Valor Total: " & Format(tot_val, "currency"), vbInformation, "Resultado Obtido"
End Sub
Nela temos apenas uma restrição (cidade) como é visto na linha do IF:
If UCase(Cells(linha, 2)) = UCase(cidade) Then
e para que essa restrição ocorra é pedido ao usuário qual o tipo de cidade que quer ser analisada, definindo a variável e uma InputBox:
Dim cidade As String
cidade = InputBox("Digite a Cidade a ser Consultada")
Então, se você deseja utilizar de duas condições é necessário a criação de uma segunda variável, uma segunda solicitação de input ao usuário e modificar o condicional IF para que ele faça a ação apenas se a condição 1 (cidade) E a condição 2 (plano, como vc solicitou) sejam verdadeiras simultaneamente.
Veja exemplo abaixo.
1) Crie a segunda variável
Dim plano As String
2) Solicite o segundo input
plano = InputBox("Digite o Plano a ser Consultado")
3) Modifique a condicional IF, considerando "Cidade" e "Plano"
If UCase(Cells(linha, 2)) = UCase(cidade) And UCase(Cells(linha, 3)) = UCase(plano) Then
*Obs: perceba que a agora para plano usa-se Cells(linha, 3) e não Cells(linha, 2) como em cidade. Isso ocorre devido ao fato da coluna do plano ser a terceira coluna (também conhecida como coluna "C") da planilha em questão e não mais a coluna 2 (ou coluna B).
Segue abaixo o código com todas as modificações:
Sub exemplo_For_Modificado()
Dim cidade As String
Dim plano As String
Dim tot_seg As Integer
Dim total_val As Double
Dim linha As Integer
cidade = InputBox("Digite a Cidade a ser Consultada")
plano = InputBox("Digite o Plano a ser Consultado")
'absoluta
Range("a6:g67").Interior.ColorIndex = 19
'relativa
Range("a6").Select
Range(ActiveCell, ActiveCell.End(xlDown).End(xlToRight)).Interior.ColorIndex = 19
'para variavel comecando em 6 até 36 - executar comandos
For linha = 6 To 36
If UCase(Cells(linha, 2)) = UCase(cidade) And UCase(Cells(linha, 3)) = UCase(plano) Then
Range(Cells(linha, 1), Cells(linha, 7)).Interior.ColorIndex = 24
tot_seg = tot_seg + 1
tot_val = tot_val + Cells(linha, 7)
Debug.Print "TOT_Seg - " & tot_seg
Debug.Print tot_val
End If
Next
Range("a6").Select
MsgBox "Total de Segurados em " & cidade & " - " & tot_seg & vbCrLf & _
"Valor Total: " & Format(tot_val, "currency"), vbInformation, "Resultado Obtido"
End Sub
Ai o raciocínio segue para quantas outras restrições você quiser, sempre lembre de criar a variável, perguntar ao usuário o que ele deseja filtrar e coloque a condicional no IF.
O mesmo pode ser feito caso você queira que ele busque por 3 condições: if C1 and C2 and c3 then e assim vai...
Espero ter ajudado.
Abraços