Запрограммировать кнопку на Шифр Атбаш на VBA в Excel
Доброго времени суток!!!
Помогите, пожалуйста, с задачкой. Пытался сам но не вышло.
Суть: написать код для шифра Атбаш на кнопку формы VBA в Excel.
Я нашёл только код на паскале а сам не пойму как его перевести на VBA в Excel. Вот и код:
const alf='абвгдеёжзийклмнопрстуфхцчшщъыьэюя';
function atbash(s:string):string;
var i:integer;
begin
for i:=1 to Length(s) do
s[i]:=alf[33-pos(s[i],alf)+1];
atbash:=s;
end;
var s:string;
begin
writeln('Введите строку для шифрования');
readln(s);
writeln('Зашифрованная строка');
s:=atbash(s);
writeln(s);
writeln('Расшифрованная строка');
s:=atbash(s);
writeln(s);
end.
Есть код на том же VBA, но не на кнопку, а результат кода отображается в окне компилятора.
Код:
Private n As Long
'исходный алфавит
Const АБВ As String = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
'новый алфавит
Const НовАБВ As String = "яюэьыъщшчцхфутсрпонмлкйизжедгвба"
Private Sub AnotherCipher()
Dim STR As String, strT As String, strR As String
‘строка которую будем зашифровывать
STR = "Простая замена один из самых древних шифров"
‘ переход к нижнему регистру
STR = LCase(STR)
5
‘печать в окно Immediate
Debug.Print STR
' шифровка
Decode STR, strR, АБВ, НовАБВ
Debug.Print strR
'расшифровка
Decode strR, strT, НовАБВ, АБВ
Debug.Print strT
End Sub
Private Sub Decode(STR, STRS, Oldkey, NewKey)
Dim n As Long, i As Long
Dim tmp As String
'определяем количество символов исходной строки
n = Len(STR)
'вводим преобразованную строку, состоящую из n пробелов
STRS = Space(n)
For i = 1 To n
'выделяем один символ исходной строки
tmp = Mid(STR, i, 1)
'определяем место символа исходной строки в исходном алфавите
k = InStr(1, Oldkey, tmp)
If k = 0 Then
'если в исходном алфавите такого символа нет
'то переносим его в новую строку не изменяя
Mid(STRS, i, 1) = tmp
Else
'заменяем соответствующий пробел на символ нового алфавита
Mid(STRS, i, 1) = Mid(NewKey, k, 1)
End If
Next i
End Sub
https://ru.wikipedia.org/wiki/Атбаш
Function ShifrAtbash(Alfavit, Text)
ShifrAtbash = ""
Dim Letter
For i = 1 To Len(Text)
ShifrAtbash = ShifrAtbash & Mid(Alfavit, Len(Alfavit) - InStr(Alfavit, Mid(Text, i, 1)) + 1, 1)
Next
End Function