PDA

View Full Version : Encryption Decoding VBA String



JBone
10-18-2018, 06:25 PM
Good evening. I'm brushing up on my VBA skills and I'm trying some more advanced coding. I'm trying one from a long time ago and I cannot make it work. Here's the issue:

Column A are numbers that need to be encrypted. Column B is a VBA output column that requires finding a replacement value for each number in the Column A set by adding 7 to one of the numbers and then finding the remainder after dividing the new value by 10. Once the scrambled values for all four numbers in the set are found, regenerate the numbers to send by swapping the first and third numbers and the second one with the fourth. (Original order of a set of numbers: first, second, third, fourth after encrypted order: encrypted third number, encrypted fourth number, encrypted first number, encrypted second number.

I can't seem to make this work!!! I appreciate any assistance!!

23065

Paul_Hossler
10-18-2018, 07:08 PM
I used 2 User Defined Functions -- you can integrate into a Sub if you want

You said 'divide' but I think the Mod is a more common operator for things like this

A lot of the statements below and be combined into a single line, but there's no performance impact and this is more readable




Option Explicit


Function Enc(S As String) As String
Dim i As Long, n As Long
Dim E(1 To 4) As String

For i = 1 To 4
n = Mid(S, i, 1)
n = n + 7
n = n Mod 10
E(i) = Format(n, "0")
Next i

Enc = E(3) & E(4) & E(1) & E(2)
End Function

Function Dec(S As String) As String
Dim i As Long, n As Long
Dim D(1 To 4) As String
Dim s1 As String

D(1) = Mid(S, 3, 1)
D(2) = Mid(S, 4, 1)
D(3) = Mid(S, 1, 1)
D(4) = Mid(S, 2, 1)

For i = 1 To 4
n = D(i)
n = n + 3
n = n Mod 10
D(i) = Format(n, "0")
Next i

Dec = D(1) & D(2) & D(3) & D(4)
End Function

jpitcairn
10-19-2018, 04:54 AM
Thank you very much