VBA: teste se um número é par ou ímpar

Faça uma pergunta
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 2

Dividir por 2. 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: © Microsoft.
Jean-François Pillou

Jean-François Pillou - Fundador do CCM
Mais conhecido como Jeff, Jean-François Pillou é o fundador do CommentCaMarche.net. Ele também é CEO do CCM Benchmark e diretor digital do Grupo Figaro.

Mais informações sobre a equipe do CCM