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

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.
Artigo original publicado por pijaku. Tradução feita por pintuda. Última modificação: 23 de fevereiro de 2018 às 14:23 por Pedro.CCM.
Este documento, intitulado 'VBA: teste se um número é par ou ímpar', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (https://br.ccm.net/) ao utilizar este artigo.
VBA: como retornar valores múltiplos
VBA: como juntar duas variáveis de tabelas