Шифр Цезаря Код VBA Excel Word
Один из самых простых и ненадежных алгоритмов кодирования на сегодняшний день, но для учебных целей подходит как нельзя лучше…
- Формулировка учебного задания по Шифру Цезаря
- Классы, упрощающие решение задачи
- Перебор символов строки в цикле
- Не забывайте выделить ячейку в актуальной строке (или строку полностью)
- Исходный код на VBA Excel или Word
С использованием ООП !
Формулировка учебного задания по Шифру Цезаря
Задание : На листе1 расположить командные кнопки "Зашифровать" и "Расшифровать". Значение ключа читать из колонки "А". Открытый текст для кодирования читать из колонки "В", а результат кодирования помещать в колонку "С". Закрытый текст для декодирования читать из колонки "С", а результат декодирования помещать в колонку "D".

Рис.1 Закодировать Декодировать Шифром Цезаря VBA Excel
Скоро появится видео
Классы, упрощающие решение задачи
Использование Классов (ООП) значительно сокращает исходный код программ.
Класс myCaesar, своим единственным методом Codec(myText, key) as String (всего 9 строк), позволяет закодировать открытую строку или раскодировать закрытую строку.
Класс myTape, своим единственным методом myShift(oldSymbol, key) as String (всего 16 строк), позволяет сдвинуть любой символ вперед или назад на заданное количество шагов, и возвращает новый символ.
Перебор символов строки в цикле
Поскольку любая строка является индексированным множеством символов, то ее обработку проводим с использование цикла…
по коду:
//------------------------------
For i = 1 To Len(myText)
mySymbol = Mid(myText, i, 1) 'очередной символ из текста
mySymbol = cezar.myShift(mySymbol, key) 'получение нового символа
myResult = myResult & mySymbol
Next i
//------------------------------
Не забывайте выделить ячейку в актуальной строке (или строку полностью)
Конечно, можно было заставить макрос проверять все ячейки в нужной колонке (В или С), и при наличии текста выполнять работу по кодировке-декодировке…
Но я считаю, что внимание человека все-равно концентрируется на одном процессе, поэтому макрос работает только с одной строкой… , именно той, в которой выделена хоть одна ячейка (объект Selection).
по коду:
//------------------------------
myRow = Selection.Row 'выделенная строка для работы
myKey = Range("A" & myRow) 'читаю ключ (если не число, возникает ошибка)
myText = Range("B" & myRow)
//------------------------------
Исходный код на VBA Excel или Word
Тестирование - это наиболее важный этап в жизненном цикле программного продукта. Поэтому не верьте картинкам, фильмам и сказкам…
Только личное тестирование во всех наиболее сложных сочетаниях данных - должно убедить Вас в доброкачественности алгоритма и исходного кода!
скачать xlsm-файл для тестирования
Другие примеры на тему «Шифрование, Кодирование и/или Сжатие Информации»
Другие примеры на языке «Visual Basic for application - VBA»
Если у Вас остались вопросы, то задать их Вы можете, нажав на эту кнопочку ...
Поделиться в соц сетях: