VBA - Cifra de César


Nesta dica, vamos ver a implementação em VBA do célebre método de criptografia. Se você não conhece, veja Cifra de César.

Pré-requisito: o código ASCII.

Option Explicit

Sub Main_Caesar()
Dim Ch As String
Ch = Cifra_César("Ave Caesar morituri te salutant", 7)
Debug.Print Ch
Debug.Print Cifra_César(Ch, -7)
End Sub

Function Cifra_César(sTe As String, Número As Long) As String
Dim vT, sG As String, sT As String, i As Long, bA As Byte
Const MAJ As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const NL As Byte = 26
Const DMA As Byte = 65 - NL
Const DMI As Byte = 97 - NL

sT = sTe
If Número < NL And Número > NL * -1 Then
sG = String(NL * 4, " ")
LSet sG = Shift & Shift & Shift
vT = Split(StrConv(sG, vbUnicode), Chr(0))
For i = 1 To Len(sT)
If Mid(sT, i, 1) Like "[a-zA-Z]" Then
bA = Asc(Mid(sT, i, 1))
If Mid(sT, i, 1) = vT(bA - DMA) Then
Mid(sT, i) = vT(bA - DMA + Nbre)
Else
Mid(sT, i) = LCase(vT(bA - DMI + Nbre))
End If
End If
Next i
End If
Cifra_César = sT
End Function

Foto: © Microsoft.
Artigo original publicado por pijaku. Tradução feita por pintuda. Última modificação: 27 de fevereiro de 2018 às 13:00 por Pedro.CCM.
Este documento, intitulado 'VBA - Cifra de César', 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 juntar duas variáveis de tabelas
VBA: como converter decimal para binário