Vamos escrever quatro funções, cada uma usando uma maneira diferente de determinar a paridade de um número.
Com a WorksheetFunction
Use a função Excel Even:
Function ÉPar(Number As Long) As Boolean
ÉPar = (WorksheetFunction.Even(Number) = Number)
End Function
Comparação binária
A partir do
último dígito (i) do número e com a ajuda da comparação binária:
- se i And 1 = 0 então i é par;
- se i And 1 = 1 então i é ímpar.
Function ÉPar2(Number As Long) As Boolean
Dim lngTemp As Long
lngTemp = CLng(Right(CStr(Number), 1))
ÉPar2 = (lngTemp And 1) = 0
End Function
Dividir por dois
Dividir por dois. A diferença entre a parte inteira e eventualmente decimal = 0 se i for par.
Function ÉPar3(Number As Long) As Boolean
Dim sngTemp As Single
sngTemp = Number / 2
ÉPar3 = ((Int(sngTemp) - sngTemp) = 0)
End Function
Módulo
Usando o módulo:
Function ÉPar4(Number As Long) As Boolean
ÉPar4 = (Number Mod 2 = 0)
End Function
Código de chamada
Option Explicit
Sub Main_Even_Odd()
Dim i As Long
For i = -50 To 48 Step 7
Debug.Print i & " : ÉPar ==> " & IIf(ÉPar(i), "is even", "is odd") _
& " " & Chr(124) & " ÉPar2 ==> " & IIf(ÉPar2(i), "is even", "is odd") _
& " " & Chr(124) & " ÉPar3 ==> " & IIf(ÉPar3(i), "is even", "is odd") _
& " " & Chr(124) & " ÉPar4 ==> " & IIf(ÉPar4(i), "is even", "is odd")
Next
End Sub
Foto: © dennizn - Shutterstock.com