Первая функция для начинающих
Функция (Function) отличается от подпрограммы (Sub) тем, что она всегда возвращает какое-либо значение. Если функция размещается в ячейке рабочего листа, то в этой ячейке мы видим значение, которое функция возвратила.
В качестве примера мы создадим функцию, вычисляющую объем цилиндра по формуле: V=π*D²/4*H, где
V – объем цилиндра;
π – число Pi;
D – диаметр основания цилиндра;
H – высота цилиндра.
Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов).
Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
Если вы ранее не создавали в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на треугольник у второй кнопки после значка Excel на панели инструментов.
#VBA #ExcelVBA #Функция #Function
Функция (Function) отличается от подпрограммы (Sub) тем, что она всегда возвращает какое-либо значение. Если функция размещается в ячейке рабочего листа, то в этой ячейке мы видим значение, которое функция возвратила.
В качестве примера мы создадим функцию, вычисляющую объем цилиндра по формуле: V=π*D²/4*H, где
V – объем цилиндра;
π – число Pi;
D – диаметр основания цилиндра;
H – высота цилиндра.
Создайте или откройте файл Excel с расширением .xlsm (Книга Excel с поддержкой макросов).
Перейдите в редактор VBA, нажав сочетание клавиш «Левая_клавиша_Alt+F11».
Если вы ранее не создавали в этом проекте VBA стандартный программный модуль, нажмите кнопку «Module» во вкладке «Insert» главного меню. Та же ссылка будет доступна при нажатии на треугольник у второй кнопки после значка Excel на панели инструментов.
#VBA #ExcelVBA #Функция #Function
Процедуры в VBA Excel
Процедура — это блок кода, который выполняет определенную задачу. В VBA Excel процедуры делятся на два типа:
1️⃣ Sub (процедура без возврата результата): выполняет действия, но не возвращает значения.
2️⃣ Function (функция): возвращает результат, который можно использовать в расчетах или других действиях. Может быть вызвана в ячейке Excel, как встроенная функция.
Есть ещё и третий тип процедуры - Property (пользовательские свойства) - но он вряд ли вам пригодится.
Вот пример простой процедуры Sub:
▶️ Чтобы запустить, откройте редактор VBA (Alt + F11), вставьте код в модуль и нажмите F5.
#Sub #SubVBA #Function #FunctionVBA #Процедура #Подпрограмма #Функцияа
Процедура — это блок кода, который выполняет определенную задачу. В VBA Excel процедуры делятся на два типа:
1️⃣ Sub (процедура без возврата результата): выполняет действия, но не возвращает значения.
2️⃣ Function (функция): возвращает результат, который можно использовать в расчетах или других действиях. Может быть вызвана в ячейке Excel, как встроенная функция.
Есть ещё и третий тип процедуры - Property (пользовательские свойства) - но он вряд ли вам пригодится.
Вот пример простой процедуры Sub:
Sub ShowMessage()
MsgBox "Добро пожаловать в VBA Excel!"
End Sub
▶️ Чтобы запустить, откройте редактор VBA (Alt + F11), вставьте код в модуль и нажмите F5.
#Sub #SubVBA #Function #FunctionVBA #Процедура #Подпрограмма #Функцияа
Синтаксис пользовательской функции
Пользовательская (написанная пользователем) функция — это процедура VBA, которая производит заданные вычисления и возвращает полученный результат. Используется, как и любая встроенная в Excel функция, для вставки в ячейки рабочего листа или для вызова из других процедур.
Синтаксис:
Компоненты функции:
1️⃣ Static — необязательное ключевое слово, указывающее на то, что значения переменных, объявленных в функции, сохраняются между ее вызовами.
2️⃣ Имя — обязательный компонент, имя пользовательской функции.
3️⃣ СписокАргументов — необязательный компонент, одна или более переменных, представляющих аргументы, которые передаются в функцию. Аргументы заключаются в скобки и разделяются между собой запятыми.
4️⃣ Операторы — необязательный компонент, блок операторов (инструкций).
5️⃣ Имя = выражение — необязательный* компонент, присвоение имени функции значения выражения или переменной. Обычно, значение присваивается функции непосредственно перед выходом из нее.
6️⃣ Exit Function — необязательный компонент, принудительный выход из функции, если ей уже присвоено окончательное значение.
* Один из компонентов Имя = выражение следует считать обязательным, так как если не присвоить функции значение, смысл ее использования теряется.
#ПользовательскаяФункция #Функция #Function #Static
Пользовательская (написанная пользователем) функция — это процедура VBA, которая производит заданные вычисления и возвращает полученный результат. Используется, как и любая встроенная в Excel функция, для вставки в ячейки рабочего листа или для вызова из других процедур.
Синтаксис:
[Static] Function Имя ([СписокАргументов])[As ТипДанных]
[Операторы]
[Имя = выражение]
[Exit Function]
[Операторы]
[Имя = выражение]
End Function
Компоненты функции:
1️⃣ Static — необязательное ключевое слово, указывающее на то, что значения переменных, объявленных в функции, сохраняются между ее вызовами.
2️⃣ Имя — обязательный компонент, имя пользовательской функции.
3️⃣ СписокАргументов — необязательный компонент, одна или более переменных, представляющих аргументы, которые передаются в функцию. Аргументы заключаются в скобки и разделяются между собой запятыми.
4️⃣ Операторы — необязательный компонент, блок операторов (инструкций).
5️⃣ Имя = выражение — необязательный* компонент, присвоение имени функции значения выражения или переменной. Обычно, значение присваивается функции непосредственно перед выходом из нее.
6️⃣ Exit Function — необязательный компонент, принудительный выход из функции, если ей уже присвоено окончательное значение.
* Один из компонентов Имя = выражение следует считать обязательным, так как если не присвоить функции значение, смысл ее использования теряется.
#ПользовательскаяФункция #Функция #Function #Static
✨ Функции для сортировки массива
🛠 Функция для сортировки массива по возрастанию с числовым сравнением числовых элементов массива
Внешний цикл сравнивает по очереди каждый элемент массива с наименьшем элементом, найденным вложенным циклом среди оставшихся элементов (с бóльшими индексами), и, если наименьший элемент myArray(im) не является текущим элементом myArray(i1), они меняются местами.
🛠 Функция для сортировки массива с выбором вида сортировки
Дополнительный параметр mySort позволяет выбрать сортировку по возрастанию или убыванию и с числовым или текстовым сравнением числовых элементов массива. Значения, которые может принимать параметр mySort в таблице ниже.
#Function #Функция #SortArray #СортировкаМассива
🛠 Функция для сортировки массива по возрастанию с числовым сравнением числовых элементов массива
Function SortArray(myArray As Variant) As Variant
Dim l As Long, u As Long, i1 As Long, i2 As Long, im As Long, tmp As Variant
'Определение наименьшего индекса массива
l = LBound(myArray)
'Определение наибольшего индекса массива
u = UBound(myArray)
For i1 = l To u
im = i1
For i2 = i1 To u
'Поиск наименьшего элемента массива, начиная с элемента myArray(i1)
If myArray(i2) < myArray(im) Then im = i2
Next
'Если наименьший элемент не является текущим (im <> i1),
'тогда наименьший элемент и текущий меняются местами
If im <> i1 Then
tmp = myArray(i1)
myArray(i1) = myArray(im)
myArray(im) = tmp
End If
Next
SortArray = myArray
End Function
Внешний цикл сравнивает по очереди каждый элемент массива с наименьшем элементом, найденным вложенным циклом среди оставшихся элементов (с бóльшими индексами), и, если наименьший элемент myArray(im) не является текущим элементом myArray(i1), они меняются местами.
🛠 Функция для сортировки массива с выбором вида сортировки
Function SortArrayNew(myArray As Variant, mySort As Long) As Variant
Dim l As Long, u As Long, i1 As Long, i2 As Long, im As Long, tmp As Variant
l = LBound(myArray)
u = UBound(myArray)
For i1 = l To u
im = i1
For i2 = i1 To u
Select Case mySort
Case Is = 0
If myArray(i2) < myArray(im) Then im = i2
Case Is = 1
If CStr(myArray(i2)) < CStr(myArray(im)) Then im = i2
Case Is = 2
If myArray(i2) > myArray(im) Then im = i2
Case Is = 3
If CStr(myArray(i2)) > CStr(myArray(im)) Then im = i2
End Select
Next
If im <> i1 Then
tmp = myArray(i1)
myArray(i1) = myArray(im)
myArray(im) = tmp
End If
Next
SortArrayNew = myArray
End Function
Дополнительный параметр mySort позволяет выбрать сортировку по возрастанию или убыванию и с числовым или текстовым сравнением числовых элементов массива. Значения, которые может принимать параметр mySort в таблице ниже.
#Function #Функция #SortArray #СортировкаМассива
Примеры программ на VBA Excel
Бегущая строка
Валидация ввода данных в поля формы VBA Excel
Вставка интервала дат (DateAdd)
Вставка интервала дат (DateSerial)
Вставка текущей даты в ячейки Excel
Выбор позиции в списке
Вывод разрешения экрана
Вывод списка листов
Выравнивание заголовка кодом VBA
Генератор паролей на VBA Excel
Добавление нового листа в оглавление
Запись значений диапазона в обычную переменную
Заполнение ComboBox названиями месяцев
Защита кода VBA паролем
Как запретить закрытие файла Excel?
Максимизация окна Excel при открытии
Необязательные параметры в VBA Excel
Номер последней заполненной строки
Обрезание расширения файла
Отбор уникальных значений из списка
Открыть сайт или файл для просмотра
Отправка писем по e-mail
Парсинг содержимого тегов с сайта в VBA Excel
Перемещение столбцов и строк с помощью VBA
Поздравление-сюрприз от VBA Excel
Проверка версий офисных программ
Программное создание модуля и процедуры
Программное создание элементов управления
Просмотр содержимого папки в VBA Excel
Простое удаление дубликатов
Работа с буфером обмена в VBA Excel
Расположение формы в окне Excel
Редактирование текста в ячейке из кода VBA
Смена заголовка окна Excel
Смена кодировки UTF-8 на UTF-16
Снятие пароля с проекта VBA Excel
Создание календаря в VBA Excel
Создание квадратной ячейки
Создание оглавления
Создание пользовательского меню
Создание резервной копии файла
Список изменений на листе Excel
Список подключенных библиотек
Сумма прописью для документов
Текст в строке состояния
Удаление всех гиперссылок
Удаление всех пустых строк и столбцов
Удаление пустых строк 1
Удаление пустых строк 2
Удаляющаяся и приближающаяся строка
Форма на весь экран в VBA Excel
Чтение текста из файла с помощью FileSystemObject
Экспорт данных из Excel в PDF
#VBA #ExcelVBA #Sub #Function #Программа #Пример
Бегущая строка
Валидация ввода данных в поля формы VBA Excel
Вставка интервала дат (DateAdd)
Вставка интервала дат (DateSerial)
Вставка текущей даты в ячейки Excel
Выбор позиции в списке
Вывод разрешения экрана
Вывод списка листов
Выравнивание заголовка кодом VBA
Генератор паролей на VBA Excel
Добавление нового листа в оглавление
Запись значений диапазона в обычную переменную
Заполнение ComboBox названиями месяцев
Защита кода VBA паролем
Как запретить закрытие файла Excel?
Максимизация окна Excel при открытии
Необязательные параметры в VBA Excel
Номер последней заполненной строки
Обрезание расширения файла
Отбор уникальных значений из списка
Открыть сайт или файл для просмотра
Отправка писем по e-mail
Парсинг содержимого тегов с сайта в VBA Excel
Перемещение столбцов и строк с помощью VBA
Поздравление-сюрприз от VBA Excel
Проверка версий офисных программ
Программное создание модуля и процедуры
Программное создание элементов управления
Просмотр содержимого папки в VBA Excel
Простое удаление дубликатов
Работа с буфером обмена в VBA Excel
Расположение формы в окне Excel
Редактирование текста в ячейке из кода VBA
Смена заголовка окна Excel
Смена кодировки UTF-8 на UTF-16
Снятие пароля с проекта VBA Excel
Создание календаря в VBA Excel
Создание квадратной ячейки
Создание оглавления
Создание пользовательского меню
Создание резервной копии файла
Список изменений на листе Excel
Список подключенных библиотек
Сумма прописью для документов
Текст в строке состояния
Удаление всех гиперссылок
Удаление всех пустых строк и столбцов
Удаление пустых строк 1
Удаление пустых строк 2
Удаляющаяся и приближающаяся строка
Форма на весь экран в VBA Excel
Чтение текста из файла с помощью FileSystemObject
Экспорт данных из Excel в PDF
#VBA #ExcelVBA #Sub #Function #Программа #Пример