Нажмите на код, чтобы скопировать его.
VBA (Visual Basic for Applications) - это язык программирования Microsoft, встроенный в Office-приложения: Excel, Word, Access, PowerPoint. Позволяет автоматизировать рутинные задачи, создавать отчёты, обрабатывать данные и управлять интерфейсом.
Примеры использования:
Alt + F11 - открыть редактор VBA в Excel/Word.
Разработчик → Визуальный редактор - если включён режим разработчика.
Разработчик → Вставить → Модуль - добавить новый модуль для кода.
Sub Привет()
MsgBox "Привет, мир!"
End Sub
Запустите через F5 или кнопку "Выполнить".
Sub ИмяПроцедуры() - начало процедуры.
End Sub - конец.
Function ИмяФункции() As Тип - функция, возвращающая значение.
End Function - конец функции.
Dim имя As String
Dim возраст As Integer
Dim сумма As Double
Dim дата As Date
Dim флажок As Boolean
имя = "Анна"
возраст = 25
сумма = 99.99
дата = Date
флажок = True
Объявление без типа (Variant - менее эффективно):
Dim x ' может хранить любой тип
ThisWorkbook - текущая книга.
Sheets("Лист1") - доступ к листу по имени.
Range("A1") - ячейка A1.
Range("A1:C10") - диапазон ячеек.
Cells(1, 1) - ячейка (строка, столбец).
ActiveCell - текущая выделенная ячейка.
Selection - выделенный диапазон.
' Запись
Range("A1").Value = "Заголовок"
Cells(2, 1).Value = 100
' Чтение
Dim текст As String
текст = Range("A1").Value
Dim число As Double
число = Cells(2, 1).Value
If Range("B2").Value > 100 Then
Range("C2").Value = "Высокое"
Else
Range("C2").Value = "Низкое"
End If
С несколькими условиями:
If возраст < 18 Then
категория = "Дети"
ElseIf возраст < 60 Then
категория = "Взрослые"
Else
категория = "Пенсионеры"
End If
Цикл по строкам:
For i = 1 To 10
Cells(i, 1).Value = "Строка " & i
Next i
While-цикл:
i = 1
Do While Cells(i, 1).Value <> ""
Cells(i, 2).Value = UCase(Cells(i, 1).Value)
i = i + 1
Loop
For Each - перебор диапазона:
For Each ячейка In Range("A1:A10")
If ячейка.Value > 50 Then
ячейка.Interior.Color = RGB(255, 0, 0) ' Красный фон
End If
Next ячейка
Dim имена(1 To 3) As String
имена(1) = "Иван"
имена(2) = "Мария"
имена(3) = "Сергей"
' Массив из диапазона
Dim данные As Variant
данные = Range("A1:A10").Value
Function Квадрат(x As Double) As Double
Квадрат = x * x
End Function
Теперь можно использовать в ячейке Excel: =Квадрат(5)
On Error Resume Next ' Игнорировать ошибки
' ... опасный код ...
On Error GoTo 0 ' Вернуть обработку ошибок
Или с перехватом:
On Error GoTo ОбработкаОшибки
Workbooks.Open "C:\нет_такого.xlsx"
Exit Sub
ОбработкаОшибки:
MsgBox "Файл не найден!", vbCritical
Sub ФорматТаблицы()
With Range("A1:D1")
.Font.Bold = True
.Interior.Color = RGB(200, 200, 255)
.Borders.LineStyle = xlContinuous
End With
End Sub
Sub КопироватьДанные()
Sheets("Источник").Range("A1:B10").Copy
Sheets("Отчёт").Range("A1").PasteSpecial xlPasteValues
Application.CutCopyMode = False
End Sub
Sub ГенерацияОтчёта()
Dim i As Integer, сумма As Double
сумма = 0
For i = 2 To 100
If Cells(i, 3).Value = "Продажа" Then
сумма = сумма + Cells(i, 4).Value
End If
Next i
Sheets("Отчёт").Range("B1").Value = "Итого:"
Sheets("Отчёт").Range("C1").Value = сумма
End Sub
Private Sub CommandButton1_Click()
MsgBox "Привет, " & TextBox1.Text
Unload Me
End Sub
MsgBox "Текст" - вывод сообщения.
InputBox("Введите имя") - запрос ввода от пользователя.
Application.ScreenUpdating = False - отключает обновление экрана (ускоряет
выполнение).
Application.Wait Now + TimeValue("00:00:03") - пауза на 3 секунды.
ThisWorkbook.Save - сохранить книгу.
Workbooks.Add - создать новую книгу.
F8 - пошаговое выполнение.
Ctrl + G - открыть окно Immediate (можно писать:
? Range("A1").Value).
Stop - точка останова (как breakpoint).
Debug.Print "значение=" & x - вывод в Immediate.
.xlsm (с поддержкой макросов).Совет: Начинайте с малого: одна кнопка → один макрос. Постепенно усложняйте. VBA - мощный инструмент автоматизации, особенно в Excel.