VBA для Excel: основные приёмы работы

VBA for Excel

Использование VBA (Visual Basic for Applications) в Excel может значительно улучшить эффективность работы с таблицами и данными по нескольким причинам:

  1. Автоматизация повторяющихся задач:
    • VBA позволяет записывать и выполнять макросы, которые автоматизируют повторяющиеся операции. Это особенно полезно при обработке больших объемов данных или выполнении однотипных действий.
  2. Создание пользовательских функций и процедур:
    • Возможность создания собственных функций и процедур позволяет адаптировать Excel под конкретные потребности пользователя. Это может включать в себя создание сложных вычислений, обработку данных или автоматизацию специфических задач.
  3. Работа с объектами Excel:
    • VBA позволяет взаимодействовать с различными объектами в Excel, такими как ячейки, диапазоны, листы и книги. Это предоставляет широкие возможности для манипулирования данными и изменения структуры таблиц.
  4. Обработка событий:
    • Возможность обработки событий, таких как изменение данных в ячейках или открытие книги, позволяет создавать более гибкие и реактивные приложения. Например, можно автоматически запускать определенные действия при изменении определенных данных.
  5. Работа с формами:
    • Создание пользовательских форм с использованием VBA облегчает ввод и обработку данных для пользователя, делая интерфейс более дружественным и удобным.
  6. Отладка и управление кодом:
    • Встроенные инструменты отладки в VBA позволяют легко находить и исправлять ошибки в коде, что делает разработку более эффективной. Также, можно динамически изменять код во время выполнения для тестирования и оптимизации.
  7. Интеграция с другими приложениями:
    • VBA позволяет взаимодействовать с другими приложениями Microsoft Office, а также с внешними источниками данных, что расширяет возможности анализа и обработки информации.
  8. Улучшенная обработка ошибок:
    • VBA предоставляет механизмы обработки ошибок, что позволяет создавать более стабильные и надежные приложения. Код может быть структурирован так, чтобы эффективно обрабатывать ситуации, когда что-то идет не так.
Содержание
  1. Работа с объектами в VBA for Excel
  2. Workbook (Книга)
  3. ActiveWorkbook
  4. Как сделать «сохранить как» и «закрыть» книгу?
  5. Работа с книгой в фоновом режиме
  6. Методы и свойства объекта Workbook
  7. Добавление новой книги к коллекции Workbooks
  8. Задания для закрепления работы с книгами
  9. Worksheet (Лист)
  10. Создание и управление листами:
  11. Работа с данными на листе
  12. Форматирование и внешний вид
  13. Циклы и итерации:
  14. Прочие методы и свойства:
  15. ActiveSheet
  16. Примеры работы с листами
  17. Пример 1: Раскрасить ярлыки листов в разные цвета
  18. Пример 2: Копирование листов «Сотрудники» и «Оплата» в другую книгу
  19. Задание для тренировки
  20. Диапазоны (Range)
  21. Создание Диапазона
  22. Работа с Данными в Диапазоне
  23. Форматирование Диапазона
  24. Циклы и Итерации по Диапазону
  25. Выполнение Различных Действий:
  26. Прочие Методы и Свойства
  27. Работа с агрегатными функциями в диапазоне
  28. Поиск и замена в диапазоне или на всем листе
  29. Поиск (метод Find)
  30. Замена, метод Replace
  31. Фильтрация данных в диапазоне. Метод AutoFilter
  32. Сортировка данных в диапазоне. Метод Sort
  33. Как дать имя диапазону и работать с ним
  34. Задание на закрепление
  35. Манипуляции с конкретной ячейкой
  36. Свойства:
  37. Методы:
  38. Практические примеры работы с ячейками
  39. Задание на тренировку работы с ячейками, строками и столбцами
  40. Работа с диаграммами в VBA
  41. Пример работы с круговой диаграммой:
  42. Пример работы с гистограммой:
  43. Изменение диаграммы:
  44. Метод AddChart2
  45. Возможные типы диаграмм
  46. Стили диаграмм
  47. Задания на создание и изменение диаграмм
  48. Работа с таблицами
  49. Задание на работу с таблицей данных
  50. Создание сводной таблицы. Объект PivotTable
  51. Задание. Создание сводной таблицы в Excel
  52. Работа с фигурами

Работа с объектами в VBA for Excel

В языке программирования VBA (Visual Basic for Applications), объекты представляют собой различные элементы приложений, которые можно управлять с помощью кода. В Excel, основными объектами являются Workbook (книга), Worksheet (лист), Range (диапазон), и другие.

Понятие объектов в VBA:

  • Объекты: Объекты представляют собой структурированные элементы программы, такие как ячейки, листы, диапазоны и другие. В VBA, объекты могут быть частью других объектов, образуя иерархию.
  • Свойства: Свойства объекта определяют его характеристики или атрибуты. Например, у объекта Range свойствами могут быть адрес ячейки, значение ячейки, формат ячейки и т.д.
  • Методы: Методы объекта представляют собой действия, которые можно выполнить с этим объектом. Например, у объекта Range методами могут быть выделение ячеек, изменение значения ячеек и т.д.

Основные объекты в Excel:

  1. Workbook (Книга): Представляет собой рабочую книгу Excel. Может содержать один или несколько листов.
  2. Worksheet (Лист): Представляет собой отдельный лист в книге. Каждый лист состоит из ячеек, которые можно адресовать и манипулировать.
  3. Range (Диапазон): Представляет собой группу ячеек в Excel. Может быть определен по адресу (например, «A1:B10») или с использованием других методов.
  4. Cells (Ячейки): Позволяет обращаться к ячейкам по их адресу. Например, Cells(1, 1) обозначает ячейку в первой строке и первом столбце.

Основные методы работы с объектами:

  1. Select: Выделяет объект. Например, Range("A1").Select выделит ячейку A1.
  2. Value: Получает или устанавливает значение объекта. Например, Range("A1").Value = 10 установит значение ячейки A1 в 10.
  3. Copy и Paste: Копирует и вставляет объекты. Например, Range("A1").Copy Range("B1") скопирует значение из ячейки A1 в ячейку B1.
  4. Find: Ищет определенное значение в объекте. Например, Range("A1:B10").Find("Искомое значение") найдет ячейку с указанным значением в диапазоне A1:B10.
  5. Offset: Позволяет смещать диапазон на определенное количество строк и столбцов. Например, Range("A1").Offset(1, 0) обозначает ячейку, находящуюся на одну строку вниз от A1.
  6. For Each: Позволяет перебирать элементы коллекции, такие как ячейки в диапазоне. Например:
For Each cell In Range("A1:B10")
    ' Ваш код для обработки каждой ячейки
Next cell

Workbook (Книга)

  • Описание: Представляет собой рабочую книгу Excel. Книга может содержать несколько листов (Worksheet) и часто используется для группировки данных и логической организации информации.
  • Примеры работы:
    ' Создание новой книги
    Workbooks.Add
    
    ' Открытие существующей книги
    Workbooks.Open("Путь_к_файлу.xlsx")
    
    ' Сохранение книги
    ActiveWorkbook.Save
    

ActiveWorkbook

ActiveWorkbook — это объект VBA, представляющий текущую активную книгу Excel. Когда в Excel открыто несколько книг, активной считается та, на которую в данный момент фокусировано внимание пользователя. ActiveWorkbook дает программисту возможность обращаться к текущей активной книге в коде VBA.

Пример использования ActiveWorkbook:

Sub ПримерActiveWorkbook()
    ' Сохранить активную книгу
    ActiveWorkbook.Save
    
    ' Вывести имя активной книги в окне сообщения
    MsgBox "Имя активной книги: " & ActiveWorkbook.Name
End Sub

Как сделать «сохранить как» и «закрыть» книгу?

Для выполнения операции «Save As» (Сохранить как) в VBA для книги Excel, вы можете использовать метод SaveAs объекта Workbook. Этот метод позволяет сохранить копию текущей книги с новым именем и/или новым расположением. Вот пример кода:

Sub SaveAsExample()
    ' Определение переменной для текущей активной книги
    Dim currentWorkbook As Workbook
    Set currentWorkbook = ActiveWorkbook
    
    ' Указание нового пути и имени файла
    Dim newFilePath As String
    newFilePath = "Путь\НовоеИмяКниги.xlsx"
    
    ' Сохранение копии книги с новым именем
    currentWorkbook.SaveAs newFilePath
    
    ' Закрытие оригинальной книги (по желанию)
    ' currentWorkbook.Close
End Sub

В этом примере:

  1. ActiveWorkbook используется для определения текущей активной книги.
  2. newFilePath задает новый путь и имя файла для сохранения копии книги.
  3. SaveAs сохраняет копию книги с новым именем.

Обратите внимание, что я закомментировал строку currentWorkbook.Close. Если вы хотите закрыть оригинальную книгу после её сохранения, вы можете раскомментировать эту строку. В противном случае оригинальная книга останется открытой.

Работа с книгой в фоновом режиме

Да, в VBA можно открыть книгу, работать с ней в фоновом режиме (то есть без видимого отображения на экране) и затем сохранить её, а также закрыть. Для этого используется свойство Visible объекта Workbook.

Пример:

Sub РаботаВФоновомРежиме()
    ' Открытие книги в фоновом режиме (Visible = False)
    Dim wb As Workbook
    Set wb = Workbooks.Open("Путь\КНИГА.xlsx", False) ' Второй параметр - Visible
    
    ' Выполнение операций с книгой (например, изменение данных)
    ' ...

    ' Сохранение книги
    wb.Save

    ' Закрытие книги без отображения на экране
    wb.Close False ' Второй параметр - SaveChanges. False - не сохранять изменения перед закрытием
End Sub

В этом примере:

  1. Visible = False при открытии книги скрывает её отображение на экране.
  2. После выполнения необходимых операций с книгой, она сохраняется с помощью wb.Save.
  3. wb.Close False закрывает книгу без сохранения изменений (если изменения были внесены, они не сохранятся).

Обратите внимание, что при работе с книгой в фоновом режиме, пользователь не увидит изменений на экране. Если важно визуальное отображение изменений, можно временно установить Visible = True, выполнить необходимые операции и затем вернуть Visible в исходное состояние.

Методы и свойства объекта Workbook

Объект Workbook в VBA для Excel предоставляет множество методов и свойств для работы с книгами. Ниже приведен список некоторых полезных методов и свойств:

Методы:

  1. Save:
    • Описание: Сохраняет изменения в текущей книге.
    • Пример: ActiveWorkbook.Save
  2. SaveAs:
    • Описание: Сохраняет копию текущей книги с новым именем и/или в новом расположении.
    • Пример: ActiveWorkbook.SaveAs "НовыйПуть\НовоеИмяКниги.xlsx"
  3. Close:
    • Описание: Закрывает текущую книгу.
    • Пример: ActiveWorkbook.Close
  4. PrintOut:
    • Описание: Печатает книгу.
    • Пример: ActiveWorkbook.PrintOut
  5. RefreshAll:
    • Описание: Обновляет все сводные таблицы и внешние связи в книге.
    • Пример: ActiveWorkbook.RefreshAll

Свойства:

  1. Name:
    • Описание: Возвращает или устанавливает имя текущей книги.
    • Пример: Debug.Print ActiveWorkbook.Name
  2. FullName:
    • Описание: Возвращает полный путь к текущей книге.
    • Пример: Debug.Print ActiveWorkbook.FullName
  3. Worksheets:
    • Описание: Коллекция листов в текущей книге.
    • Пример: Set ws = ActiveWorkbook.Worksheets("Лист1")
  4. Sheets:
    • Описание: Коллекция всех листов в текущей книге (включая листы данных, графики и диаграммы).
    • Пример: Set sheet = ActiveWorkbook.Sheets(1)
  5. Worksheets.Count:
    • Описание: Возвращает количество листов в книге.
    • Пример: Debug.Print ActiveWorkbook.Worksheets.Count
  6. ReadOnly:
    • Описание: Возвращает значение True, если книга открыта только для чтения.
    • Пример: Debug.Print ActiveWorkbook.ReadOnly
  7. ProtectStructure и ProtectWindows:
    • Описание: Защищают структуру книги и окна от изменений.
    • Пример: ActiveWorkbook.ProtectStructure = True
  8. IsAddin:
    • Описание: Возвращает значение True, если книга является надстройкой.
    • Пример: Debug.Print ActiveWorkbook.IsAddin
  9. CustomDocumentProperties:
    • Описание: Коллекция пользовательских свойств документа.
    • Пример: ActiveWorkbook.CustomDocumentProperties.Add "Автор", "Имя Автора"

Примеры работы с методами и свойствами книги.

  1. Save:
    ' Сохранить текущую книгу
    ActiveWorkbook.Save
    
  2. SaveAs:
    ' Сохранить копию текущей книги с новым именем
    ActiveWorkbook.SaveAs "Путь\НовоеИмяКниги.xlsx"
    
  3. Close:
    ' Закрыть текущую книгу
    ActiveWorkbook.Close
    
  4. PrintOut:
    ' Печать текущей книги
    ActiveWorkbook.PrintOut
    
  5. RefreshAll:
    ' Обновление всех сводных таблиц и внешних связей в книге
    ActiveWorkbook.RefreshAll
    
  6. Name:
    ' Вывести имя текущей книги в окне сообщения
    MsgBox "Имя книги: " & ActiveWorkbook.Name
    
  7. FullName:
    ' Вывести полный путь к текущей книге в окне сообщения
    MsgBox "Полный путь: " & ActiveWorkbook.FullName
    
  8. Worksheets:
    ' Обращение к листу по имени
    Set ws = ActiveWorkbook.Worksheets("Лист1")
    
  9. Sheets:
    ' Обращение к листу по индексу (в данном случае, первый лист)
    Set sheet = ActiveWorkbook.Sheets(1)
    
  10. Worksheets.Count:
    ' Вывести количество листов в книге
    MsgBox "Количество листов: " & ActiveWorkbook.Worksheets.Count
    
  11. ReadOnly:
    ' Проверить, открыта ли книга только для чтения
    If ActiveWorkbook.ReadOnly Then
        MsgBox "Книга открыта только для чтения."
    Else
        MsgBox "Книга открыта для редактирования."
    End If
    
  12. ProtectStructure и ProtectWindows:
    ' Защитить структуру и окна книги
    ActiveWorkbook.ProtectStructure = True
    ActiveWorkbook.ProtectWindows = True
    
  13. IsAddin:
    ' Проверить, является ли книга надстройкой
    If ActiveWorkbook.IsAddin Then
        MsgBox "Эта книга - надстройка."
    Else
        MsgBox "Эта книга не является надстройкой."
    End If
    
  14. CustomDocumentProperties:
    ' Добавить пользовательское свойство документа
    ActiveWorkbook.CustomDocumentProperties.Add "Автор", "Имя Автора"
    

Добавление новой книги к коллекции Workbooks

Когда вы используете метод Workbooks.Add, он автоматически добавляет новую книгу к коллекции всех открытых книг. Это означает, что эта книга становится частью коллекции Workbooks и доступна для работы без явного использования метода Open.

Sub РаботаСНовойКнигой()
    ' Создание новой книги и присвоение ей переменной
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add
    
    ' Работа с новой книгой без явного использования метода Open
    новаяКнига.Sheets(1).Range("A1").Value = "Привет, новая книга!"
    
    ' Другие операции с новой книгой...
    
    ' Закрытие новой книги
    новаяКнига.Close SaveChanges:=False
End Sub

Задания для закрепления работы с книгами

Задание 1.

  1. Создайте новую книгу, добавьте в нее лист, и установите его имя в «Отчет».
  2. Запишите в ячейку A1 листа «Отчет» значение «Привет, мир!».
  3. Сохраните книгу под именем «МойОтчет.xlsx».
  4. Проверьте, является ли книга «МойОтчет.xlsx» книгой только для чтения. Если да, выведите сообщение «Книга только для чтения», иначе выведите сообщение «Книга открыта для редактирования».
  5. Закройте книгу «МойОтчет.xlsx».
Решение
Sub РешениеЗаданий()
    ' Задание 1: Создание новой книги, добавление листа и установка его имени
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add
    новаяКнига.Sheets(1).Name = "Отчет"

    ' Задание 2: Запись значения в ячейку A1 листа "Отчет"
    новаяКнига.Sheets("Отчет").Range("A1").Value = "Привет, мир!"

    ' Задание 3: Сохранение книги под именем "МойОтчет.xlsx"
    новаяКнига.SaveAs "МойОтчет.xlsx"

    ' Задание 4: Проверка, является ли книга "МойОтчет.xlsx" книгой только для чтения
    If Workbooks("МойОтчет.xlsx").ReadOnly Then
        MsgBox "Книга только для чтения"
    Else
        MsgBox "Книга открыта для редактирования"
    End If

    ' Задание 5: Закрытие книги "МойОтчет.xlsx"
    Workbooks("МойОтчет.xlsx").Close
End Sub

Worksheet (Лист)

  • Описание: Представляет отдельный лист в книге Excel. Каждый лист содержит ячейки, с которыми можно работать.
  • Примеры работы:
    ' Выбор активного листа
    Sheets("Лист1").Select
    
    ' Создание нового листа
    Sheets.Add
    

Создание и управление листами:

  1. Добавление Листа:
    ' Добавление нового листа
    Sheets.Add
    
  2. Удаление Листа:
    ' Удаление активного листа
    ActiveSheet.Delete
    
  3. Обращение к Листу по Имени:
    ' Обращение к листу по имени
    Set ws = Worksheets("Лист1")
  4. Обращение к листу по индексу
    ' Обращение к первому листу в активной книге
    Set первыйЛист = Worksheets(1)
    
    ' Обращение ко второму листу в активной книге
    Set второйЛист = Worksheets(2)
    

Работа с данными на листе

  1. Обращение к Ячейке:
    ' Обращение к ячейке A1 на активном листе
    Cells(1, 1).Value = "Значение"
    
    • Устанавливает значение ячейки A1 на активном листе.
  2. Обращение к Диапазону:
    ' Обращение к диапазону A1:B10 на активном листе
    Range("A1:B10").Select
    
    • Выделяет диапазон ячеек на активном листе.
  3. Заполнение Данными:
    ' Заполнение диапазона A1:A10 на активном листе числами от 1 до 10
    Range("A1:A10").Value = Application.WorksheetFunction.Transpose([1:10])
    
    • Заполняет диапазон числами от 1 до 10

Форматирование и внешний вид

  1. Установка Заголовка Листа:
    ' Установка заголовка листа
    ActiveSheet.Name = "МойЛист"
    
    • Устанавливает имя активного листа.
  2. Форматирование Ячеек:
    ' Установка жирного шрифта для ячейки A1
    Range("A1").Font.Bold = True
    
    • Устанавливает жирный шрифт для ячейки A1.
  3. Установка Цвета Фона:
    ' Установка цвета фона для диапазона A1:B10
    Range("A1:B10").Interior.Color = RGB(255, 255, 0)
    
    • Устанавливает желтый цвет фона для диапазона A1:B10.

Циклы и итерации:

  1. Итерация по Ячейкам:
' Итерация по ячейкам в диапазоне A1:B10
For Each cell In Range("A1:B10")
    ' Ваш код для обработки каждой ячейки
Next cell

Прочие методы и свойства:

  1. Поиск Значения:
    ' Поиск значения в диапазоне A1:B10
    Set foundCell = Range("A1:B10").Find("ИскомоеЗначение")
    
    • Возвращает ссылку на ячейку с искомым значением.
  2. Проверка наличия Листа:
    ' Проверка наличия листа с именем "МойЛист"
    If WorksheetExists("МойЛист") Then
        MsgBox "Лист существует."
    Else
        MsgBox "Лист не существует."
    End If
    
    • Вспомогательная функция для проверки наличия листа:
      Function WorksheetExists(sheetName As String) As Boolean
          On Error Resume Next
          WorksheetExists = Worksheets(sheetName) Is Nothing
          On Error GoTo 0
      End Function
      

ActiveSheet

Объект ActiveSheet в VBA представляет собой текущий активный лист в книге Excel. Активный лист — это тот лист, на котором в данный момент сосредоточено внимание пользователя. Этот объект может использоваться для обращения к ячейкам, диапазонам, установки форматирования и других действий на текущем активном листе.

  1. Обращение к Листу:
    ' Присвоение активного листа переменной
    Dim текущийЛист As Worksheet
    Set текущийЛист = ActiveSheet
    
  2. Работа с Данными на Активном Листе:
    ' Запись значения в ячейку A1 активного листа
    ActiveSheet.Range("A1").Value = "Привет, мир!"
    
  3. Форматирование Ячеек на Активном Листе:
    ' Установка цвета фона для ячейки A1 на активном листе
    ActiveSheet.Range("A1").Interior.Color = RGB(255, 0, 0)
    
  4. Циклы и Итерации по Ячейкам:
    ' Итерация по ячейкам в диапазоне A1:B10 на активном листе
    For Each cell In ActiveSheet.Range("A1:B10")
        ' Ваш код для обработки каждой ячейки
    Next cell
    
  5. Имя и Позиция Листа:
    ' Вывести имя активного листа в окне сообщения
    MsgBox "Имя активного листа: " & ActiveSheet.Name
    
    ' Вывести позицию активного листа в окне сообщения
    MsgBox "Позиция активного листа: " & ActiveSheet.Index
    
  6. Обновление Данных:
    ' Обновление данных на активном листе
    ActiveSheet.Calculate
    

Обратите внимание, что ActiveSheet может изменяться в зависимости от действий пользователя. Если пользователь переключится на другой лист, ActiveSheet будет представлять новый активный лист.

 

Используйте ActiveSheet с осторожностью, особенно если код зависит от активного листа, так как это может привести к непредсказуемому поведению при взаимодействии с пользователем.

Примеры работы с листами

Пример 1: Раскрасить ярлыки листов в разные цвета

В этом примере мы создадим массив цветов и используем его для установки цветов ярлыков листов в текущей книге.

Sub РаскраситьЯрлыкиЛистов()
    ' Массив цветов для ярлыков листов
    Dim цвета As Variant
    цвета = Array(RGB(255, 0, 0), RGB(0, 255, 0), RGB(0, 0, 255), RGB(255, 255, 0), RGB(255, 0, 255))
    
    ' Перебор листов и установка цветов ярлыков
    For i = 1 To Sheets.Count
        Sheets(i).Tab.Color = цвета(i - 1)
    Next i
End Sub

Комментарии:

  • Мы используем массив цвета, содержащий RGB-коды для разных цветов.
  • В цикле For перебираем листы и устанавливаем цвет ярлыка каждого листа в соответствии с цветом из массива.

Пример 2: Копирование листов «Сотрудники» и «Оплата» в другую книгу

В этом примере мы создадим новую книгу и скопируем листы «Сотрудники» и «Оплата» из текущей книги в новую.

Sub КопированиеЛистов()
    ' Создание новой книги
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add
    
    ' Копирование листа "Сотрудники"
    Sheets("Сотрудники").Copy Before:=новаяКнига.Sheets(1)
    
    ' Копирование листа "Оплата"
    Sheets("Оплата").Copy Before:=новаяКнига.Sheets(2)
End Sub

Комментарии:

  • Мы используем Workbooks.Add для создания новой книги.
  • С помощью Sheets("Сотрудники").Copy и Sheets("Оплата").Copy мы копируем соответствующие листы в новую книгу.
  • Before:=новаяКнига.Sheets(1) и Before:=новаяКнига.Sheets(2) определяют порядок, в котором листы будут расположены в новой книге.

Задание для тренировки

Задание2 : Сравнение данных между листами. 

  1. Создайте новую книгу Excel.
  2. Добавьте в эту книгу три листа и назовите их «Исходные Данные», «Новые Данные» и «Результат».
  3. На листе «Исходные Данные» заполните столбец A (от A2 до A11) случайными целыми числами от 1 до 10.
  4. На листе «Новые Данные» заполните столбец A (от A2 до A11) теми же случайными целыми числами, но измените несколько чисел, чтобы создать различия с «Исходными Данными».
  5. На листе «Результат» создайте столбец A и запишите туда все уникальные значения из столбца A «Исходных Данных», которые отсутствуют в столбце A «Новых Данных».
Решение
Sub СравнениеДанныхМеждуЛистами()
    ' 1. Создание новой книги Excel
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add

    ' 2. Добавление трех листов и их названий
    новаяКнига.Sheets(1).Name = "Исходные Данные"
    новаяКнига.Sheets(2).Name = "Новые Данные"
    новаяКнига.Sheets(3).Name = "Результат"

    ' 3. Заполнение столбца A "Исходных Данных" случайными числами от 1 до 10
    For i = 2 To 11
        новаяКнига.Sheets("Исходные Данные").Cells(i, 1).Value = Int((10 * Rnd) + 1)
    Next i

    ' 4. Заполнение столбца A "Новых Данных" с изменениями
    For i = 2 To 11
        новаяКнига.Sheets("Новые Данные").Cells(i, 1).Value = Int((10 * Rnd) + 1)
    Next i
    ' Вносим изменения, например, меняем значения в нескольких ячейках
    новаяКнига.Sheets("Новые Данные").Cells(5, 1).Value = 99
    новаяКнига.Sheets("Новые Данные").Cells(8, 1).Value = 42

    ' 5. Создание столбца A на листе "Результат" и запись уникальных значений
    новаяКнига.Sheets("Исходные Данные").Columns(1).Copy новаяКнига.Sheets("Результат").Columns(1)
    новаяКнига.Sheets("Новые Данные").Columns(1).Copy новаяКнига.Sheets("Результат").Columns(2)
    новаяКнига.Sheets("Результат").Columns(1).RemoveDuplicates Columns:=1, Header:=xlNo

End Sub
  1. Шаги 1-2: Создаем новую книгу и добавляем три листа с соответствующими именами.
  2. Шаги 3-4: Заполняем столбец A «Исходных Данных» и «Новых Данных» случайными числами, вносим изменения в несколько чисел в «Новых Данных».
  3. Шаг 5: На листе «Результат» создаем столбец A и копируем в него уникальные значения из столбца A «Исходных Данных», которые отсутствуют в столбце A «Новых Данных». Используется метод RemoveDuplicates для удаления повторяющихся значений.

Диапазоны (Range)

Создание Диапазона

  1. Обращение к Одной Ячейке:
    ' Обращение к ячейке A1 на активном листе
    Cells(1, 1).Value = "Значение"
    
  2. Обращение к Диапазону:
    ' Обращение к диапазону A1:B10 на активном листе
    Range("A1:B10").Select
    
  3. Обращение к Диапазону с Использованием Ячеек:
    ' Обращение к диапазону, используя ячейки
    Dim ячейки As Range
    Set ячейки = Range(Cells(1, 1), Cells(5, 5))
    

Работа с Данными в Диапазоне

  1. Заполнение Данными:
    ' Заполнение диапазона A1:A10 на активном листе числами от 1 до 10
    Range("A1:A10").Value = Application.WorksheetFunction.Transpose([1:10])
    
  2. Чтение Данных:
    ' Чтение значения из ячейки A1
    Dim значение As Variant
    значение = Range("A1").Value
    

Форматирование Диапазона

  1. Установка Ширины и Высоты
    ' Установка ширины столбца A на активном листе
    Columns("A").ColumnWidth = 15
    
  2. Установка Цвета Фона
    ' Установка цвета фона для диапазона A1:B10
    Range("A1:B10").Interior.Color = RGB(255, 255, 0)
    
  3. Установка Границ
    ' Установка границ для диапазона A1:B10
    Range("A1:B10").Borders.LineStyle = xlContinuous
    

Циклы и Итерации по Диапазону

Итерация по Ячейкам:

' Итерация по ячейкам в диапазоне A1:B10 на активном листе
For Each ячейка In Range("A1:B10")
    ' Ваш код для обработки каждой ячейки
Next ячейка

В данном коде цикла For Each ячейки будут проходиться по строкам, начиная с первой строки (строки 1) и двигаясь сверху вниз, затем переходя к следующей строке. Каждая строка будет обрабатываться поочередно слева направо, начиная с ячейки в столбце A и двигаясь к столбцу B.

Таким образом, порядок прохождения ячеек будет следующим:

  1. A1, B1
  2. A2, B2
  3. A10, B10

Цикл будет последовательно переходить от одной строки к другой, обрабатывая ячейки в пределах каждой строки, прежде чем перейти к следующей строке.

Выполнение Различных Действий:

Выполнение Математических Операций:

' Умножение значений в диапазоне A1:B10 на 2
Range("A1:B10").Value = Range("A1:B10").Value * 2

Прочие Методы и Свойства

  1. Поиск Значения:
    ' Поиск значения в диапазоне A1:B10
    Set найденнаяЯчейка = Range("A1:B10").Find("ИскомоеЗначение")
    
  2. Объединение Ячеек:
    ' Объединение ячеек A1:B1 на активном листе
    Range("A1:B1").Merge
    
  3. Копирование и Вставка:
    ' Копирование диапазона A1:B10
    Range("A1:B10").Copy
    
    ' Вставка в ячейку C1
    Range("C1").PasteSpecial Paste:=xlPasteValues
    
  4. Определение Количества Строк и Столбцов:
    ' Определение количества строк в диапазоне
    Dim количествоСтрок As Long
    количествоСтрок = Range("A1:B10").Rows.Count
    

Работа с агрегатными функциями в диапазоне

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

  1. Пример 1: Вычисление Суммы значений в диапазоне
    Sub ВычислитьСумму()
        Dim диапазон As Range
        Set диапазон = Range("A1:A10") ' Замените диапазон на нужный
        
        Dim сумма As Double
        сумма = Application.WorksheetFunction.Sum(диапазон)
        
        MsgBox "Сумма значений в диапазоне: " & сумма
    End Sub
    
  2. Пример 2: Нахождение Среднего значения в диапазоне
    Sub НайтиСреднее()
        Dim диапазон As Range
        Set диапазон = Range("B1:B10") ' Замените диапазон на нужный
        
        Dim среднее As Double
        среднее = Application.WorksheetFunction.Average(диапазон)
        
        MsgBox "Среднее значение в диапазоне: " & среднее
    End Sub
    
  3. Пример 3: Определение Минимального значения в диапазоне
    Sub НайтиМинимум()
        Dim диапазон As Range
        Set диапазон = Range("C1:C10") ' Замените диапазон на нужный
        
        Dim минимум As Double
        минимум = Application.WorksheetFunction.Min(диапазон)
        
        MsgBox "Минимальное значение в диапазоне: " & минимум
    End Sub
    
  4. Пример 4: Вычисление Максимального значения в диапазоне
    Sub НайтиМаксимум()
        Dim диапазон As Range
        Set диапазон = Range("D1:D10") ' Замените диапазон на нужный
        
        Dim максимум As Double
        максимум = Application.WorksheetFunction.Max(диапазон)
        
        MsgBox "Максимальное значение в диапазоне: " & максимум
    End Sub
    
  5. Пример 5: Подсчет Непустых Ячеек в диапазоне
    Sub ПодсчетНепустых()
        Dim диапазон As Range
        Set диапазон = Range("E1:E10") ' Замените диапазон на нужный
        
        Dim непустые As Long
        непустые = Application.WorksheetFunction.CountA(диапазон)
        
        MsgBox "Количество непустых ячеек в диапазоне: " & непустые
    End Sub
    
  6. Пример 6: Комбинированное Использование Функций
    Sub КомбинированныйПример()
        Dim диапазон As Range
        Set диапазон = Range("F1:F10") ' Замените диапазон на нужный
        
        ' Вычисляем сумму, среднее, минимум и максимум в одном коде
        Dim сумма As Double
        сумма = Application.WorksheetFunction.Sum(диапазон)
        
        Dim среднее As Double
        среднее = Application.WorksheetFunction.Average(диапазон)
        
        Dim минимум As Double
        минимум = Application.WorksheetFunction.Min(диапазон)
        
        Dim максимум As Double
        максимум = Application.WorksheetFunction.Max(диапазон)
        
        ' Выводим результаты
        MsgBox "Сумма: " & сумма & vbNewLine & _
               "Среднее: " & среднее & vbNewLine & _
               "Минимум: " & минимум & vbNewLine & _
               "Максимум: " & максимум
    End Sub
    

В этих примерах использованы стандартные агрегатные функции (Sum, Average, Min, Max, CountA).

Поиск и замена в диапазоне или на всем листе

Поиск (метод Find)

Метод Find в VBA используется для поиска значения в диапазоне ячеек или во всем листе. Этот метод обеспечивает более гибкий и детализированный поиск, чем метод Replace, и возвращает объект Range, представляющий найденную ячейку.

Основные параметры метода Find:

' Метод Find
Function Find(What, _
              Optional After, _
              Optional LookIn, _
              Optional LookAt, _
              Optional SearchOrder, _
              Optional SearchDirection, _
              Optional MatchCase, _
              Optional MatchByte, _
              Optional SearchFormat) As Range
  • What: Значение, которое нужно найти.
  • After: Ячейка после которой начинать поиск. Если не указано, поиск начинается с начала диапазона.
  • LookIn: Где искать значение (например, в значениях ячеек, формулах, комментариях и т. д.).
  • LookAt: Тип сравнения (полное совпадение, частичное совпадение).
  • SearchOrder: Порядок поиска (по строкам, по столбцам).
  • SearchDirection: Направление поиска (вниз, вверх, влево, вправо).
  • MatchCase: Учитывать регистр при поиске (True — учитывать, False — не учитывать).
  • MatchByte: Опция для двухбайтных языков.
  • SearchFormat: Искать формат ячейки.

Пример использования метода Find для поиска значения в диапазоне:

Sub ПримерПоискаСМетодомFind()
    Dim диапазон As Range
    Set диапазон = Range("A1:B10") ' Замените диапазон на нужный
    
    Dim искомоеЗначение As Variant
    искомоеЗначение = "Значение"
    
    ' Выполнение поиска
    Dim найденнаяЯчейка As Range
    Set найденнаяЯчейка = диапазон.Find(What:=искомоеЗначение, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    
    ' Проверка на успешность поиска
    If Not найденнаяЯчейка Is Nothing Then
        MsgBox "Значение найдено в ячейке: " & найденнаяЯчейка.Address
    Else
        MsgBox "Значение не найдено."
    End If
End Sub

Замена, метод Replace

В VBA для Excel замена в диапазоне или на всем листе могут быть выполнены с использованием метода Replace объекта Range. Давайте рассмотрим примеры для поиска и замены в диапазоне ячеек и на всем листе.

Замена в диапазоне ячеек:

Sub ПоискИЗаменаВДиапазоне()
    Dim диапазон As Range
    Set диапазон = Range("A1:B10") ' Замените диапазон на нужный
    
    ' Выполнение поиска и замены
    диапазон.Replace What:="старое значение", Replacement:="новое значение", LookAt:=xlWhole, MatchCase:=False
    
    ' LookAt: xlWhole - поиск полного совпадения, xlPart - поиск частичного совпадения
    ' MatchCase: True - учет регистра, False - игнорирование регистра
End Sub

Замена на всем листе:

Sub ПоискИЗаменаНаВсемЛисте()
    Dim лист As Worksheet
    For Each лист In ThisWorkbook.Sheets ' Перебираем все листы в книге
        ' Выполнение поиска и замены на текущем листе
        лист.Cells.Replace What:="старое значение", Replacement:="новое значение", LookAt:=xlWhole, MatchCase:=False
    Next лист
End Sub

В обоих примерах:

  • What: Значение, которое вы ищете.
  • Replacement: Значение, которое будет подставлено вместо найденного.
  • LookAt: Определяет тип поиска — xlWhole (полное совпадение) или xlPart (частичное совпадение).
  • MatchCase: Определяет, учитывается ли регистр при поиске (True — учитывается, False — не учитывается).

Обратите внимание, что эти операции могут заменить все вхождения указанного значения, будьте осторожны, чтобы избежать случайных изменений.

Фильтрация данных в диапазоне. Метод AutoFilter

В VBA для Excel фильтрация и сортировка данных в диапазоне выполняются с использованием методов объекта Range.

Sub ПримерФильтрации()
    Dim диапазон As Range
    Set диапазон = Range("A1:C10") ' Замените диапазон на нужный
    
    ' Включаем фильтр
    диапазон.AutoFilter
    
    ' Применяем фильтр к столбцу B, чтобы отобразить только строки с определенным значением
    диапазон.AutoFilter Field:=2, Criteria1:="Значение"
End Sub

В этом примере мы используем метод AutoFilter для включения фильтрации в диапазоне. Затем мы применяем фильтр к столбцу B (Field:=2) и показываем только те строки, в которых значение в столбце B равно «Значение».

Сортировка данных в диапазоне. Метод Sort

Sub ПримерСортировки()
    Dim диапазон As Range
    Set диапазон = Range("A1:C10") ' Замените диапазон на нужный
    
    ' Сортировка по столбцу A в порядке возрастания
    диапазон.Sort key1:=диапазон.Columns(1), Order1:=xlAscending, Header:=xlYes
End Sub

В этом примере мы используем метод Sort для сортировки данных в диапазоне. В данном случае, мы сортируем по столбцу A (диапазон.Columns(1)) в порядке возрастания (Order1:=xlAscending). Мы также указываем, что первая строка в диапазоне является заголовком (Header:=xlYes).

Обратите внимание, что для сортировки можно указать несколько ключей (key1, key2 и так далее), что позволяет проводить многокритериальную сортировку.

Как дать имя диапазону и работать с ним

Создание именованных диапазонов в VBA для Excel обеспечивает удобный доступ к определенным ячейкам или диапазонам ячеек по имени, что делает код более читаемым и поддерживаемым. Вот как создать и работать с именованным диапазоном:

Создание именованного диапазона:

Sub СоздатьИменованныйДиапазон()
    ' Создаем именованный диапазон для столбца A с именем "МойДиапазон"
    ThisWorkbook.Names.Add Name:="МойДиапазон", RefersTo:=Range("A1:A10")
End Sub

В этом примере мы создаем именованный диапазон с именем «МойДиапазон», который ссылается на ячейки в столбце A от A1 до A10.

Работа с именованным диапазоном:

Sub РаботаСИменованнымДиапазоном()
    ' Получаем ссылку на именованный диапазон "МойДиапазон"
    Dim мойДиапазон As Range
    Set мойДиапазон = ThisWorkbook.Names("МойДиапазон").RefersToRange
    
    ' Пример использования именованного диапазона
    мойДиапазон.Select
    MsgBox "Количество ячеек в диапазоне: " & мойДиапазон.Cells.Count
End Sub

В этом примере мы получаем ссылку на именованный диапазон «МойДиапазон» с помощью ThisWorkbook.Names(«МойДиапазон»).RefersToRange. Затем мы можем использовать эту ссылку для выполнения различных операций.

Именованные диапазоны могут быть полезны при создании динамических диапазонов, когда диапазон может изменяться в зависимости от условий. Вы также можете использовать именованные диапазоны для упрощения работы с большими наборами данных.

Задание на закрепление

Задание 3. Задание на работу с объектами типа «Range»:

  1. Создайте новую книгу Excel.
  2. В первом листе заполните диапазон ячеек A1:D10 случайными целыми числами от 1 до 100.
  3. Определите сумму всех чисел в столбце B.
  4. Найдите минимальное значение в столбце C и максимальное значение в столбце D.
  5. Создайте именованный диапазон «МойДиапазон» для области ячеек A1:D10.
  6. Вставьте новый лист в книгу и скопируйте значения из столбца A первого листа в столбец B нового листа.
  7. Удалите столбец C из первого листа.
  8. Найдите среднее значение в столбце D первого листа.
  9. Выведите на экран сумму, минимум, максимум и среднее значение, а также адрес ячейки с максимальным значением в столбце D.
  10. Сохраните книгу под именем «Решение.xlsm».
Решение
Sub РешениеЗадания()
    ' Этап 1
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add
    
    ' Этап 2
    Dim первыйЛист As Worksheet
    Set первыйЛист = новаяКнига.Sheets(1)
    
    Dim i As Integer, j As Integer
    For i = 1 To 10
        For j = 1 To 4
            первыйЛист.Cells(i, j).Value = Int((100 - 1 + 1) * Rnd + 1)
        Next j
    Next i
    
    ' Этап 3
    Dim суммаБ As Double
    суммаБ = Application.WorksheetFunction.Sum(первыйЛист.Range("B1:B10"))
    
    ' Этап 4
    Dim минимумC As Double, максимумD As Double
    минимумC = Application.WorksheetFunction.Min(первыйЛист.Range("C1:C10"))
    максимумD = Application.WorksheetFunction.Max(первыйЛист.Range("D1:D10"))
    
    ' Этап 5
    новаяКнига.Names.Add Name:="МойДиапазон", RefersTo:=первыйЛист.Range("A1:D10")
    
    ' Этап 6
    новаяКнига.Sheets.Add
    Dim второйЛист As Worksheet
    Set второйЛист = новаяКнига.Sheets(2)
    
    первыйЛист.Range("A1:A10").Copy Destination:=второйЛист.Range("B1")
    
    ' Этап 7
    первыйЛист.Columns("C").Delete
    
    ' Этап 8
    Dim среднееД As Double
    среднееД = Application.WorksheetFunction.Average(первыйЛист.Range("D1:D10"))
    
    ' Этап 9
    MsgBox "Сумма B: " & суммаБ & vbNewLine & _
           "Минимум C: " & минимумC & vbNewLine & _
           "Максимум D: " & максимумD & vbNewLine & _
           "Среднее D: " & среднееД & vbNewLine & _
           "Адрес максимального значения в D: " & первыйЛист.Range("D1:D10").Cells(Application.WorksheetFunction.Match(максимумD, первыйЛист.Range("D1:D10"), 0), 1).Address
           
    ' Этап 10
    новаяКнига.SaveAs "Решение.xlsx"
End Sub

Объяснение решения в комментариях:

  1. Создается новая книга.
  2. Заполняется диапазон случайными числами.
  3. Вычисляется сумма столбца B.
  4. Находятся минимум в столбце C и максимум в столбце D.
  5. Создается именованный диапазон «МойДиапазон».
  6. Вставляется новый лист и копируются значения из столбца A в столбец B.
  7. Удаляется столбец C.
  8. Находится среднее значение в столбце D.
  9. Выводится информация на экран и находится адрес ячейки с максимальным значением в столбце D.
  10. Книга сохраняется под именем «Решение.xlsx».

Манипуляции с конкретной ячейкой

Свойства:

  1. Value: Получает или устанавливает значение ячейки.
    Dim значение As Variant
    значение = Range("A1").Value
    
  2. Formula: Получает или устанавливает формулу ячейки.
    Dim формула As String
    формула = Range("B2").Formula
    
  3. Address: Возвращает строку, представляющую адрес ячейки.
    Dim адрес As String
    адрес = Range("C3").Address
    
  4. Row: Возвращает номер строки ячейки.
    Dim номерСтроки As Integer
    номерСтроки = Range("D4").Row
    
  5. Column: Возвращает номер столбца ячейки.
    Dim номерСтолбца As Integer
    номерСтолбца = Range("E5").Column
    
  6. Font: Объект, представляющий параметры шрифта ячейки.
    Dim шрифт As Font
    Set шрифт = Range("F6").Font
    
  7. Interior: Объект, представляющий параметры заливки (цвет) ячейки.
    Dim заливка As Interior
    Set заливка = Range("G7").Interior
    

Методы:

  1. Select: Выделяет ячейку или диапазон ячеек.
    Range("A1").Select
    
  2. Copy: Копирует ячейку или диапазон ячеек в буфер обмена.
    Range("B2").Copy
    
  3. Paste: Вставляет содержимое буфера обмена в ячейку или диапазон ячеек.
    Range("C3").Paste
    
  4. Clear: Очищает содержимое ячейки или диапазона ячеек.
    Range("D4").Clear
    
  5. Merge: Объединяет ячейки в одну.
    Range("E5:F5").Merge
    
  6. Unmerge: Разъединяет объединенные ячейки.
    Range("E5:F5").Unmerge
    
  7. Insert: Вставляет ячейки или строки перед текущей ячейкой или строкой.
    Range("G7").EntireRow.Insert
    
  8. Delete: Удаляет ячейки или строки.
    Range("H8").EntireColumn.Delete
    
  9. Resize: Изменяет размер диапазона на заданное количество строк и столбцов.
    Range("I9").Resize(2, 2)
    
  10. Offset: Возвращает диапазон, смещенный относительно текущей ячейки.
    Set новаяЯчейка = Range("J10").Offset(1, 1)
    

     

Практические примеры работы с ячейками

  1. Получение адреса, номера строки и номера столбца ячейки:
    Sub ПолучитьАдресСтрокуСтолбец()
        Dim ячейка As Range
        Set ячейка = Range("A1")
        
        ' Получение адреса
        MsgBox "Адрес ячейки: " & ячейка.Address
        
        ' Получение номера строки и столбца
        MsgBox "Номер строки: " & ячейка.Row & vbNewLine & "Номер столбца: " & ячейка.Column
    End Sub
    
  2. Установка формулы или значения в ячейку:
    Sub УстановкаФормулыЗначения()
        Dim ячейка As Range
        Set ячейка = Range("B2")
        
        ' Установка формулы
        ячейка.Formula = "=SUM(A1:A10)"
        
        ' Установка значения
        ячейка.Value = 42
    End Sub
    
  3. Установка шрифта, заливки и границ ячейки:
    Sub УстановкаФорматирования()
        Dim ячейка As Range
        Set ячейка = Range("C3")
        
        ' Установка шрифта
        ячейка.Font.Bold = True
        ячейка.Font.Color = RGB(255, 0, 0)
        
        ' Установка заливки
        ячейка.Interior.Color = RGB(0, 255, 0)
        
        ' Установка границ
        ячейка.Borders.LineStyle = xlContinuous
        ячейка.Borders.Color = RGB(0, 0, 255)
    End Sub
    
  4. Работа с буфером обмена (копирование и вставка):
    Sub КопированиеВставка()
        Dim исходнаяЯчейка As Range
        Set исходнаяЯчейка = Range("D4")
        
        ' Копирование в буфер
        исходнаяЯчейка.Copy
        
        ' Вставка из буфера
        Range("E5").PasteSpecial xlPasteValues
    End Sub
    
  5. Объединение, разъединение и удаление столбца:
    Sub ОбъединениеРазъединениеУдалениеСтолбца()
        Dim объединеннаяЯчейка As Range
        Set объединеннаяЯчейка = Range("F6:G6")
        
        ' Объединение ячеек
        объединеннаяЯчейка.Merge
        
        ' Разъединение ячеек
        объединеннаяЯчейка.Unmerge
        
        ' Удаление столбца
        Columns("H").Delete
    End Sub
    
  6. Удаление строки и ячейки с разными сдвигами:
    Sub УдалениеСтрокиЯчейки()
        ' Удаление строки
        Rows("I9").Delete
        
        ' Удаление ячейки со сдвигом влево
        Range("J10").Delete Shift:=xlToLeft
        
        ' Удаление ячейки со сдвигом вверх
        Range("K11").Delete Shift:=xlUp
    End Sub
    
  7. Изменение размера ячейки:
    Sub ИзменениеРазмераЯчейки()
        Dim изменяемаяЯчейка As Range
        Set изменяемаяЯчейка = Range("L12")
        
        ' Изменение размера
        изменяемаяЯчейка.Resize(2, 2).RowHeight = 30
        изменяемаяЯчейка.Resize(2, 2).ColumnWidth = 15
    End Sub
    

     

Задание на тренировку работы с ячейками, строками и столбцами

Задание 4.

  1. Создайте новую книгу Excel.
  2. Заполните диапазон ячеек A1:D5 случайными числами от 1 до 100.
  3. Найдите сумму каждой строки и запишите результат в столбец E начиная с ячейки E1.
  4. Найдите среднее значение каждого столбца и запишите результат в строку 6 начиная с ячейки F6.
  5. Окрасьте ячейки, содержащие числа больше 50, в зеленый цвет.
  6. Создайте новый лист в книге.
  7. Скопируйте значения из столбца B первого листа в столбец A нового листа, а значения из столбца D в столбец B нового листа.
  8. Удалите столбец C первого листа.
  9. Найдите максимальное значение в диапазоне A1:B5 на первом листе и выведите его в сообщении.
  10. Сохраните книгу под именем «Решение_Тренировка.xlsx».
Решение
Sub РешениеТренировочногоЗадания()
    ' Этап 1
    Dim новаяКнига As Workbook
    Set новаяКнига = Workbooks.Add
    
    ' Этап 2
    Dim первыйЛист As Worksheet
    Set первыйЛист = новаяКнига.Sheets(1)
    
    Dim i As Integer, j As Integer
    For i = 1 To 5
        For j = 1 To 4
            первыйЛист.Cells(i, j).Value = Int((100 - 1 + 1) * Rnd + 1)
        Next j
    Next i
    
    ' Этап 3
    For i = 1 To 5
        первыйЛист.Cells(i, 5).Formula = "=SUM(A" & i & ":D" & i & ")"
    Next i
    
    ' Этап 4
    For j = 1 To 4
        первыйЛист.Cells(6, j + 5).Formula = "=AVERAGE(" & первыйЛист.Cells(1, j).Address & ":" & первыйЛист.Cells(5, j).Address & ")"
    Next j
    
    ' Этап 5
    For Each ячейка In первыйЛист.UsedRange
        If ячейка.Value > 50 Then
            ячейка.Interior.Color = RGB(0, 255, 0) ' Зеленый цвет
        End If
    Next ячейка
    
    ' Этап 6
    новаяКнига.Sheets.Add
    Dim второйЛист As Worksheet
    Set второйЛист = новаяКнига.Sheets(2)
    
    ' Этап 7
    первыйЛист.Range("B1:B5").Copy Destination:=второйЛист.Range("A1")
    первыйЛист.Range("D1:D5").Copy Destination:=второйЛист.Range("B1")
    
    ' Этап 8
    первыйЛист.Columns("C").Delete
    
    ' Этап 9
    Dim максЗначение As Double
    максЗначение = WorksheetFunction.Max(первыйЛист.Range("A1:B5"))
    MsgBox "Максимальное значение: " & максЗначение
    
    ' Этап 10
    новаяКнига.SaveAs "Решение_Тренировка.xlsx"
End Sub
  1. Создается новая книга и заполняется случайными числами.
  2. Находится сумма каждой строки и среднее значение каждого столбца.
  3. Окрашиваются ячейки с числами больше 50 в зеленый цвет.
  4. Создается новый лист, копируются значения и удаляется столбец.
  5. Находится максимальное значение в диапазоне и выводится в сообщении.
  6. Книга сохраняется под именем «Решение_Тренировка.xlsx».

Работа с диаграммами в VBA

В VBA для Excel, создание и работа с графиками (включая круговые диаграммы и гистограммы) осуществляется через объекты Chart и ChartObject.

Пример работы с круговой диаграммой:

Sub СозданиеКруговойДиаграммы()
    ' Создание нового листа для диаграммы
    Dim листДиаграммы As Worksheet
    Set листДиаграммы = Sheets.Add
    
    ' Заполнение данных для диаграммы
    листДиаграммы.Range("A1").Value = "Категория 1"
    листДиаграммы.Range("A2").Value = "Категория 2"
    листДиаграммы.Range("B1").Value = 30
    листДиаграммы.Range("B2").Value = 70
    
    ' Создание объекта диаграммы
    Dim диаграмма As ChartObject
    Set диаграмма = листДиаграммы.Shapes.AddChart2(251, xlPie)
    
    ' Настройка данных для диаграммы
    With диаграмма.Chart
        .SetSourceData Source:=листДиаграммы.Range("A1:B2")
        .ChartTitle.Text = "Круговая диаграмма"
        .HasLegend = True
        .Legend.Position = xlLegendPositionBottom
    End With
End Sub

Пример работы с гистограммой:

Sub СозданиеГистограммы()
    ' Создание нового листа для диаграммы
    Dim листДиаграммы As Worksheet
    Set листДиаграммы = Sheets.Add
    
    ' Заполнение данных для диаграммы
    листДиаграммы.Range("A1").Value = "Категория 1"
    листДиаграммы.Range("A2").Value = "Категория 2"
    листДиаграммы.Range("B1").Value = 30
    листДиаграммы.Range("B2").Value = 70
    
    ' Создание объекта диаграммы
    Dim диаграмма As ChartObject
    Set диаграмма = листДиаграммы.Shapes.AddChart2(xlColumnClustered)
    
    ' Настройка данных для диаграммы
    With диаграмма.Chart
        .SetSourceData Source:=листДиаграммы.Range("A1:B2")
        .ChartTitle.Text = "Гистограмма"
        .HasLegend = True
        .Legend.Position = xlLegendPositionBottom
    End With
End Sub

Изменение диаграммы:

Sub ИзменениеДиаграммы()
    ' Получение объекта диаграммы
    Dim диаграмма As ChartObject
    Set диаграмма = ActiveSheet.ChartObjects(1)
    
    ' Изменение заголовка диаграммы
    диаграмма.Chart.ChartTitle.Text = "Новый заголовок"
    
    ' Изменение шаблона оформления
    диаграмма.Chart.ChartStyle = 8  ' Выберите номер стиля из галереи стилей
    
    ' Изменение цветов
    With диаграмма.Chart.SeriesCollection(1).Points(1).Format.Fill
        .ForeColor.RGB = RGB(255, 0, 0)  ' Красный цвет
    End With
    
    ' Добавление легенды
    диаграмма.Chart.HasLegend = True
    диаграмма.Chart.Legend.Position = xlLegendPositionRight
End Sub

Метод AddChart2

Метод AddChart2 используется для создания нового объекта диаграммы в Excel VBA. Этот метод принимает несколько параметров, которые определяют тип и расположение создаваемой диаграммы. Основные параметры метода AddChart2:

Set ChartObject = Shapes.AddChart2(Style, Type, Left, Top, Width, Height, NewLayout)
  • Style (обязательный): Определяет стиль оформления диаграммы. Этот параметр принимает значение типа XlChartStyle, представляющее номер стиля из галереи стилей диаграмм Excel.
  • Type (обязательный): Определяет тип диаграммы. Этот параметр принимает значение типа XlChartType, представляющее тип диаграммы, например, xlColumnClustered, xlPie и так далее.
  • Left (обязательный): Определяет расположение левого верхнего угла диаграммы по горизонтали относительно левого верхнего угла листа.
  • Top (обязательный): Определяет расположение левого верхнего угла диаграммы по вертикали относительно левого верхнего угла листа.
  • Width (обязательный): Определяет ширину диаграммы в точках.
  • Height (обязательный): Определяет высоту диаграммы в точках.
  • NewLayout (опциональный): Определяет, следует ли применять новый макет диаграммы. Этот параметр принимает значение типа XlChartElementPosition, например, xlChartElementPositionAutomatic или xlChartElementPositionCustom.

Возможные типы диаграмм

В VBA для Excel, перечисление XlChartType определяет различные типы диаграмм, которые можно создавать с использованием метода AddChart2.

  1. xlColumnClustered (колоночная диаграмма): Колоночная диаграмма, в которой столбцы группируются в кластеры.
  2. xlColumnStacked (колоночная диаграмма с накоплением): Колоночная диаграмма, в которой столбцы группируются и накапливаются.
  3. xlLine (линейная диаграмма): Линейная диаграмма, в которой данные представлены линией.
  4. xlPie (круговая диаграмма): Круговая диаграмма, представляющая данные в виде секторов.
  5. xlBarClustered (гистограмма): Гистограмма, в которой столбцы группируются в кластеры.
  6. xlBarStacked (гистограмма с накоплением): Гистограмма, в которой столбцы группируются и накапливаются.
  7. xlArea (диаграмма области): Диаграмма области, в которой области представляют данные.
  8. xlRadar (радарная диаграмма): Радарная диаграмма, представляющая данные в виде ломаных линий.
  9. xlScatterMarkers (точечная диаграмма с маркерами): Точечная диаграмма, в которой точки отмечены маркерами.
  10. xlDoughnut (кольцевая диаграмма): Кольцевая диаграмма, аналогичная круговой, но с отверстием в центре.
  11. xlStockHLC (финансовая диаграмма): Финансовая диаграмма, представляющая данные о ценах акций.

Стили диаграмм

В VBA для Excel, перечисление XlChartStyle определяет различные стили оформления для диаграмм. Эти стили влияют на внешний вид элементов диаграммы, таких как линии, шрифты, заливки и т. д.

  1. xlChartStyleColorGradientArea (0): Градиентная заливка области.
  2. xlChartStyleColorGradientLine (1): Градиентная заливка линии.
  3. xlChartStyleColorGradientNone (2): Отсутствие градиентной заливки.
  4. xlChartStyleColorGradientHorizontal (3): Горизонтальная градиентная заливка.
  5. xlChartStyleColorGradientVertical (4): Вертикальная градиентная заливка.
  6. xlChartStyleColorPatterned (5): Заливка с шаблоном цвета.
  7. xlChartStyleColorPatternedLines (6): Заливка с шаблоном цвета, представленным линиями.
  8. xlChartStyleColorPatternedDashes (7): Заливка с шаблоном цвета, представленным штрихами.
  9. xlChartStyleColorPatternedDots (8): Заливка с шаблоном цвета, представленным точками.
  10. xlChartStyleColorPatternedGrid (9): Заливка с шаблоном цвета, представленным сеткой.
  11. xlChartStyleColorPatternedMosaic (10): Заливка с шаблоном цвета, представленным мозаикой.
  12. xlChartStyleColorGradientHorizontalCenter (11): Горизонтальная градиентная заливка с центральным уровнем цвета.
  13. xlChartStyleColorGradientVerticalCenter (12): Вертикальная градиентная заливка с центральным уровнем цвета.
  14. xlChartStyleColorGradientDiagonalDown (13): Диагональная градиентная заливка (вниз).
  15. xlChartStyleColorGradientDiagonalUp (14): Диагональная градиентная заливка (вверх).
  16. xlChartStyleColorGradientFromCorner (15): Градиентная заливка от угла.

Задания на создание и изменение диаграмм

Задание 5. Работа с круговой диаграммой

  1. Создайте новый лист в книге Excel.
  2. Заполните ячейки A1:B4 данными: в столбце A — названия категорий (например, «Категория 1», «Категория 2», «Категория 3», «Категория 4»), в столбце B — процентное соотношение (например, 30, 20, 25, 25).
  3. Создайте круговую диаграмму, используя эти данные.
  4. Добавьте заголовок «Распределение категорий» к диаграмме.
  5. Измените цвета секторов диаграммы на ваш выбор.
  6. Добавьте легенду внизу диаграммы.
  7. Сохраните книгу под именем «Круговая_Диаграмма.xlsx».
Решение
Sub Задание1()
    ' 1. Создание нового листа
    Dim лист As Worksheet
    Set лист = Sheets.Add
    
    ' 2. Заполнение данных
    лист.Range("A1:B4").Value = Array("Категория 1", "Категория 2", "Категория 3", "Категория 4", _
                                     30, 20, 25, 25)
    
    ' 3. Создание круговой диаграммы
    Dim диаграмма As ChartObject
    Set диаграмма = лист.Shapes.AddChart2(251, xlPie)
    
    ' 4. Настройка данных для диаграммы
    With диаграмма.Chart
        .SetSourceData Source:=лист.Range("A1:B4")
        .ChartTitle.Text = "Распределение категорий"
        
        ' 5. Изменение цветов секторов
        .SeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)  ' Красный цвет
        .SeriesCollection(1).Points(2).Format.Fill.ForeColor.RGB = RGB(0, 255, 0)  ' Зеленый цвет
        .SeriesCollection(1).Points(3).Format.Fill.ForeColor.RGB = RGB(0, 0, 255)  ' Синий цвет
        
        ' 6. Добавление легенды
        .HasLegend = True
        .Legend.Position = xlLegendPositionBottom
    End With
    
    ' 7. Сохранение книги
    ActiveWorkbook.SaveAs "Круговая_Диаграмма.xlsx"
End Sub

Задание 6. Работа со столбчатой диаграммой

  1. Создайте новый лист в книге Excel.
  2. Заполните ячейки A1:B6 данными: в столбце A — названия категорий (например, «Категория 1», «Категория 2», «Категория 3», «Категория 4», «Категория 5», «Категория 6»), в столбце B — значения (например, 50, 30, 40, 20, 10, 60).
  3. Создайте столбчатую диаграмму, используя эти данные.
  4. Добавьте заголовок «Распределение категорий» к диаграмме.
  5. Измените цвета столбцов диаграммы на ваш выбор.
  6. Добавьте подписи данных (Data Labels) к каждому столбцу диаграммы.
  7. Сохраните книгу под именем «Столбчатая_Диаграмма.xlsx».
Решение
Sub Задание2()
    ' 1. Создание нового листа
    Dim лист As Worksheet
    Set лист = Sheets.Add
    
    ' 2. Заполнение данных
    лист.Range("A1:B6").Value = Array("Категория 1", "Категория 2", "Категория 3", "Категория 4", "Категория 5", "Категория 6", _
                                     50, 30, 40, 20, 10, 60)
    
    ' 3. Создание столбчатой диаграммы
    Dim диаграмма As ChartObject
    Set диаграмма = лист.Shapes.AddChart2(xlColumnClustered)
    
    ' 4. Настройка данных для диаграммы
    With диаграмма.Chart
        .SetSourceData Source:=лист.Range("A1:B6")
        .ChartTitle.Text = "Распределение категорий"
        
        ' 5. Изменение цветов столбцов
        .SeriesCollection(1).Points(1).Format.Fill.ForeColor.RGB = RGB(255, 0, 0)  ' Красный цвет
        .SeriesCollection(1).Points(2).Format.Fill.ForeColor.RGB = RGB(0, 255, 0)  ' Зеленый цвет
        .SeriesCollection(1).Points(3).Format.Fill.ForeColor.RGB = RGB(0, 0, 255)  ' Синий цвет
        
        ' 6. Добавление подписей данных
        .ApplyDataLabels Type:=xlDataLabelsShowValue, AutoText:=True, LegendKey:=False, _
                        HasLeaderLines:=False
        
        ' 7. Сохранение книги
        ActiveWorkbook.SaveAs "Столбчатая_Диаграмма.xlsx"
    End With
End Sub

Работа с таблицами

ListObject в VBA представляет собой объект, который представляет собой таблицу в Excel. Этот объект обеспечивает удобное управление данными в виде таблицы, позволяя использовать структурированный формат данных с автоматическими заголовками и удобствами фильтрации и сортировки.

Sub РаботаСListObject()
    ' Создание нового листа
    Dim лист As Worksheet
    Set лист = Sheets.Add
    
    ' Добавление данных в ячейки
    лист.Range("A1").Value = "Имя"
    лист.Range("B1").Value = "Возраст"
    
    ' Определение области для таблицы
    Dim область As Range
    Set область = лист.Range("A1:B1").Resize(2, 2)
    
    ' Создание ListObject (таблицы)
    Dim таблица As ListObject
    Set таблица = лист.ListObjects.Add(xlSrcRange, область, , xlYes)
    
    ' Оформление таблицы
    With таблица
        .TableStyle = "TableStyleMedium9" ' Выбор стиля оформления таблицы
        .HeaderRowRange.Interior.Color = RGB(0, 102, 204) ' Задание цвета фона для заголовков
        .HeaderRowRange.Font.Color = RGB(255, 255, 255) ' Задание цвета текста для заголовков
    End With
    
    ' Добавление данных в таблицу
    таблица.ListRows.Add
    таблица.ListRows(1).Range.Value = Array("John", 25)
    таблица.ListRows.Add
    таблица.ListRows(2).Range.Value = Array("Anna", 30)
    
    ' Удаление строки из таблицы
    таблица.ListRows(1).Delete
    
    ' Добавление новой строки в таблицу
    таблица.ListRows.Add
    таблица.ListRows(3).Range.Value = Array("Mike", 28)
    
    ' Сортировка таблицы по столбцу "Возраст"
    таблица.Sort.SortFields.Clear
    таблица.Sort.SortFields.Add Key:=таблица.ListColumns("Возраст").DataBodyRange, _
                                SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With таблица.Sort
        .SetRange таблица.HeaderRowRange.Resize(таблица.ListRows.Count + 1, таблица.ListColumns.Count)
        .Header = xlYes
        .MatchCase = False
        .Apply
    End With
End Sub

Задание на работу с таблицей данных

Задание 7.

  1. Создайте новую книгу Excel и добавьте на лист таблицу с заголовками «Имя», «Возраст», «Город».
  2. Заполните таблицу данными для нескольких человек.
  3. Добавьте нового человека в конец таблицы.
  4. Удалите из таблицы того, кто старше 30 лет.
  5. Отсортируйте таблицу по столбцу «Возраст» в порядке убывания.
  6. Измените цвет фона ячеек с заголовками таблицы на свой выбор.
  7. Сохраните книгу под именем «Таблица_Данных.xlsx».
Решение
Sub РаботаСТаблицейДанных()
    ' Создание новой книги
    Dim книга As Workbook
    Set книга = Workbooks.Add
    
    ' Добавление нового листа
    Dim лист As Worksheet
    Set лист = книга.Sheets(1)
    
    ' Добавление заголовков таблицы
    лист.Range("A1:C1").Value = Array("Имя", "Возраст", "Город")
    
    ' Заполнение таблицы данными
    лист.ListObjects.Add(xlSrcRange, лист.Range("A1").CurrentRegion, , xlYes).TableStyle = "TableStyleMedium9"
    лист.ListObjects(1).ListRows.Add.ListObject.ListRows(1).Range.Value = Array("John", 25, "New York")
    лист.ListObjects(1).ListRows.Add.ListObject.ListRows(2).Range.Value = Array("Anna", 32, "London")
    лист.ListObjects(1).ListRows.Add.ListObject.ListRows(3).Range.Value = Array("Mike", 28, "Berlin")
    
    ' Добавление нового человека в конец таблицы
    лист.ListObjects(1).ListRows.Add
    лист.ListObjects(1).ListRows(4).Range.Value = Array("Sara", 22, "Paris")
    
    ' Удаление тех, кто старше 30 лет
    Dim ячейка As Range
    For Each ячейка In лист.ListObjects(1).ListColumns("Возраст").DataBodyRange
        If ячейка.Value > 30 Then
            ячейка.EntireRow.Delete
        End If
    Next ячейка
    
    ' Сортировка по столбцу "Возраст" в порядке убывания
    лист.ListObjects(1).Sort.SortFields.Clear
    лист.ListObjects(1).Sort.SortFields.Add Key:=лист.ListObjects(1).ListColumns("Возраст").DataBodyRange, _
                                           SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    лист.ListObjects(1).Sort.Apply
    
    ' Изменение цвета фона заголовков таблицы
    лист.ListObjects(1).HeaderRowRange.Interior.Color = RGB(255, 0, 0) ' Красный цвет
    
    ' Сохранение книги
    книга.SaveAs "Таблица_Данных.xlsx"
End Sub

Создание сводной таблицы. Объект PivotTable

Рассмотрим пример создания сводной таблицы. Сделаем настройку фильтра, строк, столбцов, итогов (взять среднее, сумму и максимум от различных данных). Покажем, как управлять форматом отображаемых данных. Применим фильтр к таблице.

Sub СозданиеСводнойТаблицы()
    ' Создание новой книги
    Dim книга As Workbook
    Set книга = Workbooks.Add
    
    ' Добавление нового листа
    Dim лист As Worksheet
    Set лист = книга.Sheets(1)
    
    ' Добавление данных для сводной таблицы
    лист.Range("A1:D1").Value = Array("Имя", "Отдел", "Зарплата", "Бонус")
    лист.Range("A2:D6").Value = Array("John", "Отдел 1", 5000, 1000)
    лист.Range("A3:D7").Value = Array("Anna", "Отдел 2", 6000, 1200)
    лист.Range("A4:D8").Value = Array("Mike", "Отдел 1", 5500, 800)
    лист.Range("A5:D9").Value = Array("Sara", "Отдел 2", 7000, 1500)
    
    ' Создание сводной таблицы
    Dim своднаяТаблица As PivotTable
    Set своднаяТаблица = лист.PivotTableWizard(TableDestination:=лист.Range("F2"), _
                                                 TableName:="СводнаяТаблица")
    
    ' Настройка полей сводной таблицы
    With своднаяТаблица
        .PivotFields("Имя").Orientation = xlRowField ' Поле "Имя" в строках
        .PivotFields("Отдел").Orientation = xlColumnField ' Поле "Отдел" в столбцах
        .PivotFields("Зарплата").Orientation = xlDataField ' Поле "Зарплата" в значениях
        .PivotFields("Зарплата").Function = xlAverage ' Итог: Среднее значение
        .PivotFields("Бонус").Orientation = xlDataField ' Поле "Бонус" в значениях
        .PivotFields("Бонус").Function = xlSum ' Итог: Сумма
    End With
    
    ' Управление форматом отображаемых данных
    With своднаяТаблица.PivotFields("Зарплата")
        .NumberFormat = "#,##0.00 $" ' Формат числа с двумя знаками после запятой и знаком доллара
    End With
    
    ' Применение фильтра
    своднаяТаблица.PivotFields("Отдел").PivotFilters.Add Type:=xlCaptionIsNotEqual, Value1:="Отдел 1"
    
End Sub

Задание. Создание сводной таблицы в Excel

Задание 8.

  1. Создайте новую книгу Excel и добавьте на первый лист данные о продажах с заголовками «Продукт», «Регион», «Количество», «Выручка».
  2. Выделите область данных, включая заголовки, идущую от ячейки A1 до D20.
  3. Вставьте сводную таблицу на новом листе, где строки будут представлять продукты, столбцы — регионы, значения — сумма выручки.
  4. Добавьте итоговые значения по строкам и столбцам (сумма выручки по продуктам и регионам).
  5. Примените условное форматирование к итоговым значениям: если значение больше 10000, выделите ячейку желтым цветом.
  6. Отсортируйте сводную таблицу по убыванию суммы выручки по продуктам.
  7. Сохраните книгу под именем «Сводная_Таблица.xlsx».
Решение
Sub СозданиеСводнойТаблицы()
    ' Шаг 1: Создание новой книги и добавление данных
    Dim книга As Workbook
    Set книга = Workbooks.Add
    
    Dim лист As Worksheet
    Set лист = книга.Sheets(1)
    
    ' Добавление заголовков
    лист.Range("A1:D1").Value = Array("Продукт", "Регион", "Количество", "Выручка")
    
    ' Добавление данных
    лист.Range("A2:D20").Value = Array("Продукт1", "Регион1", 100, 12000)
    ' ... добавьте остальные данные
    
    ' Шаг 2: Выделение области данных
    Dim областьДанных As Range
    Set областьДанных = лист.Range("A1:D20")
    
    ' Шаг 3: Вставка сводной таблицы
    Dim своднаяТаблица As PivotTable
    Set своднаяТаблица = книга.Sheets.Add.PivotTableWizard(TableDestination:=лист.Range("A1"), TableName:="СводнаяТаблица")
    
    ' Шаг 4: Настройка полей сводной таблицы
    With своднаяТаблица
        .PivotFields("Продукт").Orientation = xlRowField ' Поле "Продукт" в строки
        .PivotFields("Регион").Orientation = xlColumnField ' Поле "Регион" в столбцы
        .PivotFields("Выручка").Orientation = xlDataField ' Поле "Выручка" в значения
        
        ' Шаг 5: Добавление итоговых значений
        .ColumnGrand = True
        .RowGrand = True
        
        ' Шаг 6: Условное форматирование итоговых значений
        .DataBodyRange.FormatConditions.Add Type:=xlCellValue, Operator:=xlGreater, Formula1:="10000"
        .DataBodyRange.FormatConditions(1).Interior.Color = RGB(255, 255, 0) ' Желтый цвет
    End With
    
    ' Шаг 7: Сохранение книги
    книга.SaveAs "Сводная_Таблица.xlsx"
End Sub

Работа с фигурами

В Excel VBA, для создания и редактирования фигур используется объект Shape. Вот примеры создания и редактирования нескольких типов фигур:

Пример 1: Создание прямоугольника:

Sub СозданиеПрямоугольника()
    Dim лист As Worksheet
    Set лист = ActiveSheet
    
    ' Создание прямоугольника
    Dim прямоугольник As Shape
    Set прямоугольник = лист.Shapes.AddShape(msoShapeRectangle, 100, 100, 100, 50)
    
    ' Настройка свойств прямоугольника
    With прямоугольник
        .Fill.ForeColor.RGB = RGB(255, 0, 0) ' Красный цвет заливки
        .Line.ForeColor.RGB = RGB(0, 0, 255) ' Синий цвет обводки
        .TextFrame.Characters.Text = "Мой прямоугольник"
    End With
End Sub

Пример 2: Создание эллипса:

Sub СозданиеЭллипса()
    Dim лист As Worksheet
    Set лист = ActiveSheet
    
    ' Создание эллипса
    Dim эллипс As Shape
    Set эллипс = лист.Shapes.AddShape(msoShapeOval, 200, 200, 80, 40)
    
    ' Настройка свойств эллипса
    With эллипс
        .Fill.ForeColor.RGB = RGB(0, 255, 0) ' Зеленый цвет заливки
        .Line.ForeColor.RGB = RGB(255, 0, 0) ' Красный цвет обводки
        .TextFrame.Characters.Text = "Мой эллипс"
    End With
End Sub

Пример 3: Создание линии:

Sub СозданиеЛинии()
    Dim лист As Worksheet
    Set лист = ActiveSheet
    
    ' Создание линии
    Dim линия As Shape
    Set линия = лист.Shapes.AddLine(300, 300, 400, 400)
    
    ' Настройка свойств линии
    With линия
        .Line.ForeColor.RGB = RGB(0, 0, 0) ' Черный цвет линии
        .Line.Weight = 2 ' Толщина линии
        .TextFrame.Characters.Text = "Моя линия"
    End With
End Sub

 

Понравилась статья? Поделиться с друзьями:
Школа Виктора Комлева
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.