Trabalhando com Operadores
Deslize para mostrar o menu
Declarar variáveis permite armazenar valores. Operadores são usados para combinar, comparar e testar esses valores — que é basicamente como se expressa uma regra de negócio em código. "O estoque está abaixo do nível de reposição?" é um operador de comparação. "Repor se o estoque estiver baixo E o produto for Eletrônicos" é um operador lógico.
Operadores Aritméticos
A maioria deles se comporta exatamente como em uma calculadora, mas o VBA possui dois operadores de divisão que fazem coisas realmente diferentes:
Dim total As Double
total = 45 * 3 ' multiplication → 135
total = 100 / 3 ' division → 33.33...
total = 100 \ 3 ' integer division → 33 (drops remainder)
total = 100 Mod 3 ' remainder only → 1
total = 2 ^ 3 ' exponent → 8
A barra invertida (\) e o Mod são os que mais confundem, pois parecem semelhantes, mas respondem a perguntas opostas. 100 \ 3 responde "quantas vezes inteiras 3 cabe em 100?" — a resposta é 33, e o que sobra é descartado. 100 Mod 3 responde à pergunta inversa: "o que sobra depois que 3 cabe em 100 o máximo de vezes inteiras possível?" — a resposta é 1. Juntos, 33 grupos de 3 mais um resto de 1 resultam em 100 — isso não é coincidência, é exatamente para isso que esses dois operadores existem. Esse par é exatamente como se calcula "quantas caixas completas de 3 posso embalar e quantas unidades sobram para uma caixa parcial?" ou para verificar se um número de linha é par (i Mod 2 = 0).
Operadores de Comparação
Retornam True ou False:
44 > 30 ' True
44 = 44 ' True
"Office" = "office" ' False — VBA's default string comparison IS case-sensitive
44 <> 30 ' True (not equal)
Operadores Lógicos
Combinam duas ou mais comparações em um único resultado True/False — exatamente como uma regra de negócio com múltiplas condições é expressa:
If category = "Electronics" And stock < 30 Then
' triggers only if BOTH are true
End If
If category = "Office" Or category = "Electronics" Then
' triggers if EITHER is true
End If
If Not (stock < reorderLevel) Then
' triggers if stock is NOT below reorder level
End If
And exige que todas as condições conectadas por ele sejam True para que a expressão inteira seja True — o primeiro exemplo só executa para produtos Eletrônicos que realmente estão com estoque baixo, não para todo produto com estoque baixo, independentemente da categoria. Or exige apenas uma condição True, sendo útil para verificar se um valor pertence a um pequeno conjunto de valores aceitáveis. Not simplesmente inverte um resultado True/False — é frequentemente usado, como no terceiro exemplo, para expressar uma regra como "NÃO a condição ruim" quando isso soa mais natural do que afirmar diretamente a condição boa.
Concatenação de Strings
Une textos com & (não +, que o VBA reserva para números):
Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134
Perceba que currentStock é um número (134), não texto, mas é concatenado na string sem nenhuma conversão — o VBA converte automaticamente um número para sua representação textual ao usar &. Essa conveniência é exatamente o motivo pelo qual & é preferido ao + para unir textos: se você escrever "Stock: " + currentStock, o VBA tentará interpretar toda a expressão como aritmética e pode gerar um erro ou um resultado confuso, dependendo do contexto. & sempre significa "unir como texto", sem ambiguidade.
Tarefa
- Usando os dados do Monitor Arm (Price 89.99, Stock 18, Reorder Level 10), escreva uma expressão que verifique se o estoque é menor ou igual ao nível de reposição mais 10 — um aviso de "chegando perto" em vez de um alerta rígido.
- Monte uma mensagem concatenada: "Monitor Arm está com 18 unidades (reposição em 10)" usando variáveis, não texto fixo.
1. A expressão "chegando perto"
- São necessárias três variáveis: uma para armazenar o estoque (18), uma para o nível de reposição (10) e uma expressão que as compare.
- "Menor ou igual a" é um operador de comparação simples:
<=. - A frase "nível de reposição mais 10" significa que você não está comparando o estoque diretamente com 10 — está comparando com um valor calculado. Escreva essa soma diretamente na comparação:
stock <= reorderLevel + 10. - Para visualizar o resultado, atribua a expressão a uma variável
Boolean. - Calcule manualmente quanto é
10 + 10antes de executar, para saber se18 <= 20deve retornarTrueouFalse, e verifique se seu código concorda.
2. Construindo a mensagem
- O operador que une textos é
&, não+. - Observe o resultado desejado em partes:
"Monitor Arm is at "+ (o número do estoque) +" units (reorder at "+ (o nível de reposição) +")". Conte as partes — são cinco, alternando entre texto literal entre aspas e uma variável. - A tarefa diz "usando variáveis, não texto fixo" — isso significa que os valores
18e10na mensagem final devem vir das variáveis de estoque ereorderLevel, e não serem digitados como números literais dentro da string. - Concatenar um número com
&não exige conversão — o VBA transforma automaticamente em texto, então você pode unir uma variável numérica diretamente à string. - Monte tudo em uma variável
Stringprimeiro (message = ...), depois exiba comMsgBox messagepara conferir se corresponde exatamente ao resultado esperado, incluindo parênteses e espaçamento.
Ou utilize o código a seguir
Abra o arquivo Section_2_VBA_Fundamentals.xlsm, pressione Alt+F11 e utilize o módulo em que você já está trabalhando neste workbook (insira um via Inserir → Módulo se ainda não tiver — seguindo o mesmo padrão de modIntro da Seção 1, você pode nomeá-lo de modFundamentals).
Sub MonitorArmCheck()
Dim stock As Integer
Dim reorderLevel As Integer
Dim isGettingClose As Boolean
Dim message As String
stock = 18
reorderLevel = 10
' Part 1 — the "getting close" check
isGettingClose = stock <= reorderLevel + 10
MsgBox isGettingClose
' Part 2 — the concatenated message
message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
MsgBox message
End Sub
Clique em qualquer lugar dentro do Sub e pressione F5. Devem aparecer duas caixas de mensagem em sequência — primeiro True (já que 18 ≤ 20), depois a frase.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Trabalhando com Operadores
Declarar variáveis permite armazenar valores. Operadores são usados para combinar, comparar e testar esses valores — que é basicamente como se expressa uma regra de negócio em código. "O estoque está abaixo do nível de reposição?" é um operador de comparação. "Repor se o estoque estiver baixo E o produto for Eletrônicos" é um operador lógico.
Operadores Aritméticos
A maioria deles se comporta exatamente como em uma calculadora, mas o VBA possui dois operadores de divisão que fazem coisas realmente diferentes:
Dim total As Double
total = 45 * 3 ' multiplication → 135
total = 100 / 3 ' division → 33.33...
total = 100 \ 3 ' integer division → 33 (drops remainder)
total = 100 Mod 3 ' remainder only → 1
total = 2 ^ 3 ' exponent → 8
A barra invertida (\) e o Mod são os que mais confundem, pois parecem semelhantes, mas respondem a perguntas opostas. 100 \ 3 responde "quantas vezes inteiras 3 cabe em 100?" — a resposta é 33, e o que sobra é descartado. 100 Mod 3 responde à pergunta inversa: "o que sobra depois que 3 cabe em 100 o máximo de vezes inteiras possível?" — a resposta é 1. Juntos, 33 grupos de 3 mais um resto de 1 resultam em 100 — isso não é coincidência, é exatamente para isso que esses dois operadores existem. Esse par é exatamente como se calcula "quantas caixas completas de 3 posso embalar e quantas unidades sobram para uma caixa parcial?" ou para verificar se um número de linha é par (i Mod 2 = 0).
Operadores de Comparação
Retornam True ou False:
44 > 30 ' True
44 = 44 ' True
"Office" = "office" ' False — VBA's default string comparison IS case-sensitive
44 <> 30 ' True (not equal)
Operadores Lógicos
Combinam duas ou mais comparações em um único resultado True/False — exatamente como uma regra de negócio com múltiplas condições é expressa:
If category = "Electronics" And stock < 30 Then
' triggers only if BOTH are true
End If
If category = "Office" Or category = "Electronics" Then
' triggers if EITHER is true
End If
If Not (stock < reorderLevel) Then
' triggers if stock is NOT below reorder level
End If
And exige que todas as condições conectadas por ele sejam True para que a expressão inteira seja True — o primeiro exemplo só executa para produtos Eletrônicos que realmente estão com estoque baixo, não para todo produto com estoque baixo, independentemente da categoria. Or exige apenas uma condição True, sendo útil para verificar se um valor pertence a um pequeno conjunto de valores aceitáveis. Not simplesmente inverte um resultado True/False — é frequentemente usado, como no terceiro exemplo, para expressar uma regra como "NÃO a condição ruim" quando isso soa mais natural do que afirmar diretamente a condição boa.
Concatenação de Strings
Une textos com & (não +, que o VBA reserva para números):
Dim message As String
message = "Product: " & productName & " | Stock: " & currentStock
' Product: Wireless Mouse | Stock: 134
Perceba que currentStock é um número (134), não texto, mas é concatenado na string sem nenhuma conversão — o VBA converte automaticamente um número para sua representação textual ao usar &. Essa conveniência é exatamente o motivo pelo qual & é preferido ao + para unir textos: se você escrever "Stock: " + currentStock, o VBA tentará interpretar toda a expressão como aritmética e pode gerar um erro ou um resultado confuso, dependendo do contexto. & sempre significa "unir como texto", sem ambiguidade.
Tarefa
- Usando os dados do Monitor Arm (Price 89.99, Stock 18, Reorder Level 10), escreva uma expressão que verifique se o estoque é menor ou igual ao nível de reposição mais 10 — um aviso de "chegando perto" em vez de um alerta rígido.
- Monte uma mensagem concatenada: "Monitor Arm está com 18 unidades (reposição em 10)" usando variáveis, não texto fixo.
1. A expressão "chegando perto"
- São necessárias três variáveis: uma para armazenar o estoque (18), uma para o nível de reposição (10) e uma expressão que as compare.
- "Menor ou igual a" é um operador de comparação simples:
<=. - A frase "nível de reposição mais 10" significa que você não está comparando o estoque diretamente com 10 — está comparando com um valor calculado. Escreva essa soma diretamente na comparação:
stock <= reorderLevel + 10. - Para visualizar o resultado, atribua a expressão a uma variável
Boolean. - Calcule manualmente quanto é
10 + 10antes de executar, para saber se18 <= 20deve retornarTrueouFalse, e verifique se seu código concorda.
2. Construindo a mensagem
- O operador que une textos é
&, não+. - Observe o resultado desejado em partes:
"Monitor Arm is at "+ (o número do estoque) +" units (reorder at "+ (o nível de reposição) +")". Conte as partes — são cinco, alternando entre texto literal entre aspas e uma variável. - A tarefa diz "usando variáveis, não texto fixo" — isso significa que os valores
18e10na mensagem final devem vir das variáveis de estoque ereorderLevel, e não serem digitados como números literais dentro da string. - Concatenar um número com
&não exige conversão — o VBA transforma automaticamente em texto, então você pode unir uma variável numérica diretamente à string. - Monte tudo em uma variável
Stringprimeiro (message = ...), depois exiba comMsgBox messagepara conferir se corresponde exatamente ao resultado esperado, incluindo parênteses e espaçamento.
Ou utilize o código a seguir
Abra o arquivo Section_2_VBA_Fundamentals.xlsm, pressione Alt+F11 e utilize o módulo em que você já está trabalhando neste workbook (insira um via Inserir → Módulo se ainda não tiver — seguindo o mesmo padrão de modIntro da Seção 1, você pode nomeá-lo de modFundamentals).
Sub MonitorArmCheck()
Dim stock As Integer
Dim reorderLevel As Integer
Dim isGettingClose As Boolean
Dim message As String
stock = 18
reorderLevel = 10
' Part 1 — the "getting close" check
isGettingClose = stock <= reorderLevel + 10
MsgBox isGettingClose
' Part 2 — the concatenated message
message = "Monitor Arm is at " & stock & " units (reorder at " & reorderLevel & ")"
MsgBox message
End Sub
Clique em qualquer lugar dentro do Sub e pressione F5. Devem aparecer duas caixas de mensagem em sequência — primeiro True (já que 18 ≤ 20), depois a frase.
Obrigado pelo seu feedback!