Visual Basic for Applications (VBA) для Excel
возведения основания
натурального логарифма в
указанную степень
Log (A) Натуральный логарифм 1,098612289
Rnd () Случайное число из интервала
[0,1). Перед вызовом функции
Rnd используйте инструкцию
Randomize() без аргумента
☺
Sgn (A)
Sgn (-A)
Знак числа 1
-1
Sqr (A) Квадратный корень из числа 1,732050808
Int (A/B) Отбрасывает дробную часть 0
Функции преобразования форматов
Val ("3.5") Возвращает числа,
содержащиеся в строке, как
числовое значение
соответствующего типа
3.5
Str (A) Возвращает значение,
являющееся строковым
представлением числа
"3"
В качестве допустимого десятичного разделителя функция str воспринимает
только точку. При наличии другого десятичного разделителя (например, запятой)
для преобразования чисел в строки следует использовать функцию cstr, описанную
ниже.
Функции обработки строк
string$="сдать Зачет" : length=5 : start=4
Lease(string$) Преобразует строку к
нижнему регистру.
"сдать зачет"
Ucase(string$) Преобразует строку к
верхнему регистру.
"СДАТЬ
ЗАЧЕТ"
Left(string$,
length)
Возвращает подстроку,
состоящую из заданного числа
первых символов исходной
строки
"сдать"
Right(string$,
length)
Возвращает строку,
состоящую из заданного числа
последних символов исходной
строки.
"зачет"
Mid (string$,
start,
length)
Возвращает подстроку строки,
содержащую указанное число
символов.
"ть За"
Len (string$) Возвращает число символов
строки.
LTrim (" "&string$)
RTrim (string$&" ")
Возвращает копию строки без
пробелов в начале|конце.
"сдать Зачет"
"сдать Зачет"
InStr(start,
string$,"а")
Возвращает позицию первого
вхождения одной строки
внутри другой строки.
Visual Basic for Applications (VBA) для Excel
Цикл
Повторяет блок операторов заданное количество раз.
FOR Счетчик = Начало TO Конец [STEP шаг]
[Инструкции]
NEXT Счетчик
Пример:
j = 0
For i = 1 To 10 step 1
j = j + 1
Next i
String$ = Str$(i) & " " & Str$(j)
После выполнения данной программы String$ принимает значение "11 10".
Visual Basic for Applications (VBA) для Excel
Взаимодействие с Excel
Код программ на VBA в Excel создается в специальном редакторе, который
доступен по горячим клавишам Alt+F11 или через меню Сервис Макрос
Редактор Visual Basic
Код программ записывается в специальных модулях. Пример создания нового
модуля изображен на рисунке ниже.
Создание функции (Function)
Функция, созданная в VBA может быть вызвана как любая другая встроенная
функция MS Excel. В приведенном примере в ячейке B1 вызывается myfunc, в
которую передается содержимое ячейки A1 и присваивается переменной a$. Далее,
Visual Basic for Applications (VBA) для Excel
в ходе выполнения программы одноименной с названием функции myfunc
переменной присваивается значение, возвращаемое в рабочий лист Excel.
Создание процедуры (Sub)
Процедура (или подпрограмма или макрос) отличается от функции тем, что
1. в нее не передаются значения;
2. из нее не возвращаются значения;
⇒ процедура не может быть вызвана из ячейки листа.
Процедуры должны быть полностью автономны и получать входные данные
для расчетов из ячеек листа или из других источников самостоятельно.
Подпрограмма объявляется аналогично объявлению функции:
Sub mysub()
Rem Операторы процедуры
End Sub
Для запуска выполнения процедуры необходимо создать кнопку ее вызова.
Для этого нужно выбрать одноименную пиктограмму на панели инструментов
Формы (Вид Панели инструментов Формы) и присвоить ей выполнение
макроса. В случае, если процедура на момент создания кнопки еще не написана, то
можно указать ее в поле «Имя макроса» и нажать на кнопку «Создать» (на рисунке
внизу кнопка «Создать» заменит кнопку «Правка»).
В VBA предусмотрено несколько способов считывания данных с листа. Во
следующих двух вариантах значение из ячейки A1 будет считываться в переменную
a$.
a$=Cells(1, 1).Value
a$=Range("A1").Value
Visual Basic for Applications (VBA) для Excel
При этом первый вариант удобен для считывания большого массива ячеек с
использованием циклов. Второй – при считывании отдельных ячеек из листа.
На рисунке выше показан результат выполнения процедуры после нажатия
кнопки «Кнопка 3» или кнопки «Run Sub/UserForm». Алгоритм работы процедуры
аналогичен алгоритму работы функции рассмотренной в предыдущем разделе.
Visual Basic for Applications (VBA) для Excel
Пример задач
Задачи на технику и алгоритмизацию1:
1) Найти корни квадратного уравнения при заданных параметрах a,b,c.2
2) Найти N-ное число Фибоначчи3.
3) Показать разложение числа на Общие Делители.
4) Найти Наибольший Общий Делитель (НОД) двух чисел.
5) Вывести в столбец все перестановки чисел 1..N.
6) Подсчитать количество слов длины К из данных N букв, не
содержащих данное подслово.
7) Привести матрицу к треугольному виду и решить систему уравнений
методом Гаусса.
1 Задачи пронумерованы по мере усложнения алгоритмической составляющей задачи.
2 Нечетные задачи реализовать в виде подпрограмм, четные – в виде функций.
3 В том числе найти формулу определения чисел Фибоначчи.__