VBA Excel
241 subscribers
88 photos
23 links
VBA Excel для начинающих. Справка по VBA Excel. Visual Basic for Applications. Справочник. Самоучитель.
Download Telegram
Первая функция для начинающих

Функция (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:

Sub ShowMessage()
MsgBox "Добро пожаловать в VBA Excel!"
End Sub


▶️ Чтобы запустить, откройте редактор VBA (Alt + F11), вставьте код в модуль и нажмите F5.

#Sub #SubVBA #Function #FunctionVBA #Процедура #Подпрограмма #Функцияа
Синтаксис пользовательской функции

Пользовательская (написанная пользователем) функция — это процедура VBA, которая производит заданные вычисления и возвращает полученный результат. Используется, как и любая встроенная в Excel функция, для вставки в ячейки рабочего листа или для вызова из других процедур.

Синтаксис:
[Static] Function Имя ([СписокАргументов])[As ТипДанных]
[Операторы]
[Имя = выражение]
[Exit Function]
[Операторы]
[Имя = выражение]
End Function


Компоненты функции:
1️⃣ Static — необязательное ключевое слово, указывающее на то, что значения переменных, объявленных в функции, сохраняются между ее вызовами.
2️⃣ Имя — обязательный компонент, имя пользовательской функции.
3️⃣ СписокАргументов — необязательный компонент, одна или более переменных, представляющих аргументы, которые передаются в функцию. Аргументы заключаются в скобки и разделяются между собой запятыми.
4️⃣ Операторы — необязательный компонент, блок операторов (инструкций).
5️⃣ Имя = выражение — необязательный* компонент, присвоение имени функции значения выражения или переменной. Обычно, значение присваивается функции непосредственно перед выходом из нее.
6️⃣ Exit Function — необязательный компонент, принудительный выход из функции, если ей уже присвоено окончательное значение.

* Один из компонентов Имя = выражение следует считать обязательным, так как если не присвоить функции значение, смысл ее использования теряется.

#ПользовательскаяФункция #Функция #Function #Static
Функции преобразования типов данных

🔤 Синтаксис:
Функция (аргумент)

Список функций преобразования типов, типы данных, которые они возвращают, и интервалы данных для аргументов, смотрите в таблице ниже.

#VBA #ExcelVBA #Function #DataType #Функции #ТипДанных
Функции для сортировки массива

🛠 Функция для сортировки массива по возрастанию с числовым сравнением числовых элементов массива
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 #Программа #Пример