Модуль 6.
Работа с книгами, листами и ячейками
О чем мы узнаем
Коллекция Workbooks и объект
Workbook

Коллекция Worksheets и объект
Worksheet

объект Range
Получение сслки на книгу
• Три способа получения ссылки:
 • Debug.Print Workbooks("Смета.xls").FullName
 • Debug.Print ActiveWorkbook.Name
 • Debug.Print ThisWorkbook.Name
• Создание книги:
 •   Dim oWbk As Workbook
     Set oWbk = Workbooks.Add()
• Открытие книги:
 • Dim oWbk As Workbook
     Set oWbk = WorkBooks.Open("C:mybook1.xls")
Стандартная работа с книгами
• Add() создает новую книгу и делает ее
  активной
• Close() закрывает все открытые книги
• Open() открывает указанную книгу
 • Основной параметр - имя открываемой книги
Специальные методы
коллекции Workbooks
• Только в самых простых случаях
• OpenDatabase()
 • открывает базу данных
 • выполняет запрос к ней
  • напрямую открывает таблицу или представление
 • результаты запроса помещает как
   импортированные внешние данные в новую
   автоматически созданную книгу
• OpenText() — в качестве источника выступает
  текстовый файл
• OpenXML() — то же, но с XML- файлом
Свойства коллекции Workbooks
• Count – количество открытых книг
• Item – позволяет обращаться к отдельной
  книге в коллекции
 • идентификатор - ее индекс или имя

   MsgBox "Открыто" + Str(Workbooks.Count) + _
     " книг"
   For i = 1 To Workbooks.Count
     MsgBox Workbooks.Item(i).Name + _
        " имя открытой книги №" + Str(i)
   Next i
Свойства объекта Workbook
• Name, CodeName, FullName
 • Name – имя файла книги
 • FullName – имя файла книги вместе с полным путем к
   нему
 • CodeName – как эта книга называется в коде
  • можно посмотреть в окне Project Explorer
  • открыть свойства книги в окне Properties, в строке
    (Name)
• Path – полный путь в файловой системе к книге
  Excel
Разные имена книги
MsgBox "Кодовое имя текущей книги: " + _
 ActiveWorkbook.CodeName + Chr(13) + _
 "Имя текущей книги: " + _
 ActiveWorkbook.Name + Chr(13) + _
 "Полное имя книги: " + _
 ActiveWorkbook.FullName
Свойства объекта Workbook
•
     Charts, Sheets, ActiveChart, ActiveSheet, Custo
     mViews, BuiltinDocumentProperties и
     CustomDocumentProperties, Windows, WebOp
     tions – возвращают одноименные коллекции
     соответствующих объектов
• ConflictResolution – определяет, как будут
  разрешаться конфликты изменения данных
    • SaveAs(), ExclusiveAccess()
    • MultiUserEditing
    • UserStatus
Свойства объекта Workbook
• FileFormat
• Names
  For Each Item In ThisWorkbook.Names
    Debug.Print Item.Name
  Next
Методы объекта Workbook
• Очевидные методы
  Activate(), Close(), Save(), SaveAs(), PrintOu
  t(), Protect() и Unprotect()
События объекта Workbook
Двойной щелчок на объекте ThisWorkbook
События объекта Workbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, _
 ByVal Target As Range)
 MsgBox "Вы отредактировали даные на листе: " & _
   Sh.Name & ", в ячейке " & Target.Address & _
   ". Теперь ячейка содержит следующие данные: " & _
   Target.Value
End Sub
Коллекция Worksheets
• содержит листы открытой книги
• Создание листа:
• Add(Before, After, Count, Type)
 • ThisWorkbook.Worksheets.Add
 • ActiveWorkbook.Worksheets.Add _
   Count:=Val(InputBox("Введите количество
   листов"))
Создание листа
Dim oExcel As New Excel.Application 'Запускаем Excel
oExcel.Visible = True 'Делаем его видимым
Dim oWbk As Excel.Workbook
Set oWbk = oExcel.Workbooks.Add() 'Создаем новую книгу
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Add() 'Создаем новый лист
oSheet.Name = "Новый лист" 'Присваиваем ему имя
Копирование листа
• В пределах книги
• ActiveWorkbook.ActiveSheet.Copy _
  After:=Worksheets("Данные")
• В новой книге
• ActiveWorkbook.ActiveSheet.Copy
Удаление и перемещение
• ActiveWorkbook.Worksheets.Item(1).Delete
• ActiveWorkbook.ActiveSheet.Move _
  Before:=Worksheets("Данные")
 • Возможен параметр After
Поиск нужного листа
Dim oExcel As New Excel.Application 'Запускаем Excel
oExcel.Visible = True 'Делаем его видимым
Dim oWbk As Excel.Workbook
Set oWbk = oExcel.Workbooks.Add() 'Создаем новую книгу
Dim oSheet As Excel.Worksheet
Set oSheet = oWbk.Worksheets.Item("Лист1") 'Находим Лист1
oSheet.Name = "Новый лист" 'Присваиваем ему имя "Новый лист"
Свойства коллекции Worksheets
• Привычные нам свойства и методы
  коллекций VBA
• Сount, Item, Add(), Delete()
• специфический метод FillAcrossSheets()
• копирование объекта Range
  (полностью, только содержимое или только
  оформление) во все листы текущей книги
Объект Worksheet
• все часто используемые методы Workheet уже
  знакомы по описаниям предыдущих объектов и
  коллекций Excel
 • Activate
 • Calculate
 • Copy, Delete, Move
 • Select
 • Scenarios
 • SetBackgroundPicture
 • PivotTables – коллекция сводных таблиц, расположенных
   на листе
 • ShowAllData показывает все содержимое рабочего листа
  • отменяет скрытие данных при фильтровании и т.д.
Методы объекта Worksheet
• Paste вставляет                'Копируем выделенную область
  содержимое буфера               'в буфер обмена
  обмена в указанную              Application.Selection.Copy
  область                         'Выделяем ячейку A3
    • Копирование в буфер         Range("A3").Select
      обмена – метод Copy         'Вставляем содержимое буфера
      объекта Range (или          ActiveSheet.Paste
      объекта Selection)          'Теперь выделяем диапазон ячеек,
                                  'в котором хранятся исходные данные
•    PasteSpecial осуществляет
                                  Range("A2:F2").Select
     специальную вставку
                                  Application.Selection.Copy
•    Protect и Unprotect –        Range("A4").Select
     защита и снятие защиты       'Вставляем значения = без формул
                                  Selection.PasteSpecial_
                                 Paste:=xlPasteValues
Свойства объекта Worksheet
• С помощью Cells можно обращаться к каждой
  конкретной ячейке по отдельности
 • ActiveSheet.Cells(1, 5) = 8
• EnableCalculation
• EnableSelection
• Next и Previous – перемещение по листам книги
• PageSetup
• Protection…
• QueryTables – таблицы запросов
Свойства объекта Worksheet
• Range – работа с ячейками и диапазонами ячеек
• ActiveSheet.Range("E1") = 4

• Dim MyCell As Variant
  For Each MyCell In ActiveSheet.Range("A1:K100")
     MyCell.Value = MyCell.Value + 1
  Next
• UsedRange – заполненные ячейки
• Visible – скрытие и отображение листов
• Type
• xlWorksheet или xlChart
События объекта Worksheet
• Практически            Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  полностью              'Для хранения пароля
  идентичны               Dim str_Pass As String
  аналогичным             str_Pass = ActiveSheet.Range("A2")
  событиям для
                          If Len(str_Pass) >= 8 Then _
  Workbook
                            ActiveSheet.Range("B2") = "Надежный пароль"
•   Самое важное
                          If Len(str_Pass) < 8 And Len(str_Pass) >= 5 Then _
    событие – Change
                            ActiveSheet.Range("B2") = _
•   BeforeRightClick и
                            "Пароль средней надежности"
    BeforeDoubleClick
                          If Len(str_Pass) < 5 Then _
                            ActiveSheet.Range("B2") = _
                            "Ненадежный пароль«
                         End Sub
Объект Range
• наиболее часто используемый объект в
  иерархии объектной модели Excel
• может представлять одну ячейку, несколько
  ячеек
 • несмежные ячейки или их наборы
 • целый лист
• www.microsoft.com/support - 22 способа
  получения объекта Range
Получение объекта Range
• 1-й способ
 • Dim oRange As Range
   Set oRange = Worksheets("Лист1").Range("A1")
 • Dim oRange As Range
   Set oRange = Worksheets("Лист1").Range("A1:D10")
• 2-й способ
 • Dim oRange As Range
   Set oRange = Worksheets("Лист1").Cells(1, 4)
 • Dim oRange
   Set oRange = Range(Cells(1, 1), Cells(5, 3))
 • Dim obj_MyCell As Range
   Set obj_MyCell = ActiveSheet.Cells(5, 5)
   obj_MyCell.Select
Как обратиться к ячейке
• По имени
• ActiveSheet.Range("A2").Select
• ActiveSheet.Range("A2:E2").Select
  ActiveSheet.Range("A2:E4").Select
• По координатам
• ActiveSheet.Cells(5,1).Select
• ActiveSheet.Range(Cells(5, 4), _
  Cells(7, 5)).Select
Как обратиться к ячейке
• С использованием переменных

  For i = 1 To 3
      For j = 1 To 3
        ActiveSheet.Cells(i, j).Select
        Application.Wait (Now + _
        TimeValue("0:00:01"))
        p=p+1
        Selection = p
      Next j
   Next i
  ActiveSheet.Range("A1:E5").Clear
Методы Range
• Activate – активация ячейки
 • Range("A1:E5").Select
 • Range("C2").Activate
• AddComment – добавляем комментарии к
  ячейкам
 •   Range("C3").AddComment ("Проверка комментария")
• AutoFit – автонастройка ширины столбцов и
  высоты строк
 •   ActiveSheet.Range("A1:E1").Columns.AutoFit
 •   ActiveSheet.Range("A:E").Columns.AutoFit
Методы Range
• Clear, ClearComments, ClearContents,
  ClearFormats – очистка и удаление
• ActiveSheet.Range("A1:E5").Clear
  Activesheet.Cells.Select
  Selection.Clear
• Copy, Cut, PasteSpecial – буфер обмена
• Delete – удалить диапазон
Merge, UnMerge –
объединение ячеек
'Заполняем область C3:L2                   'Выравниваем размер столбцов
 'случайными целыми числами                 ActiveSheet.Range("C:L").Columns.AutoFit
 For i = 1 To 10                            'Записываем название таблицы
   For j = 1 To 10                          'в ячейку верхней строчки
     ActiveSheet.Cells(i + 2, j + 2) = _    Range("C2") = "Название таблицы"
     Int(Rnd * 100)                         'Объединяем ячейки над таблицей
   Next j                                   Range("C2:L2").Merge
 Next i
Select – выделение ячейки
Dim obj_Range As Range
Dim num_Sum
'Обращаемся к каждой ячейке
'в выделенной области
For Each obj_Range In Selection.Cells
  num_Sum = num_Sum + Val(obj_Range)
Next
MsgBox ("Сумма выделенных ячеек: " & _
num_Sum)
Еще методы
•   AutoFill()                                  •    Replace()
•   AutoFormat()                                •    Show()
•   BorderAround()
                                                •    ShowDependents()
•   Consolidate()
                                                •    ShowErrors()
•   CopyFromRecordset()
                                                •    Sort()
•   DataSeries()
•   Dirty()                                     •    Speak()
•   FillDown(), FillUp(), FillLeft(), FillRig   •    SpecialCells()
    ht()
                                                    • Set oRange2 =
•   Find()                                            oRange.SpecialCells(xlCellTypeBlanks)
•   GoalSeek()                                        oRange2.Select 'Проверяем, так ли это

•   Justify()                                   • SubTotal()
•   Parse()                                     • Table()
•   PrintOut() и PrintPreview()                 • TextToColumns()
Свойства Range
• Address - адрес ячейки в формате A1
Dim num_Row
 Dim num_Col
 Dim MyRange As Range
 num_Row = Val(InputBox("Введите столбец"))
 num_Col = Val(InputBox("Введите строку"))
 Set MyRange = _
   ActiveSheet.Cells(num_Row, num_Col)
 MsgBox (MyRange.Address + _
 " - имя ячейки " & _
 " с индексами " & num_Row & " и " & num_Col)
Свойства Range
• Areas - работа с несмежными выделенными областями
 • If Selection.Areas.Count > 1 Then
       Debug.Print "Диапазон с несмежными областями"
     End If

• Characters – меняем фрагменты текста или их формат в
  ячейке, не затрагивая остальные данные
 •     чтобы ввести текст в ячейку A1 и изменить цвет первой буквы
        Dim oRange As Range
        Set oRange = Range("A1")
        oRange.Value = "Мой текст"
        oRange.Characters(1, 1).Font.Color = vbRed
Свойства Range
• Areas - работа с несмежными выделенными областями
• Borders - управление границами ячеек
• Cells, Columns, Rows - ячейки, столбцы, строки
 • num_Rows = obj_Range.Rows.Count
• Dim obj_Range As Range
  Set obj_Range = ActiveSheet.Range("B2:F7")
  For i = 1 To obj_Range.Rows.Count
    For j = 1 To obj_Range.Columns.Count
      obj_Range.Cells(i, j) = _
      Int(Rnd * 100)
    Next j
  Next i
Свойства Range
• CurrentRegion - область, заполненная данными
 • Worksheets("Лист1").Activate
   ActiveCell.CurrentRegion.Select
• Characters, Font - форматирование текста
 • Dim obj_Range As Range
   Set obj_Range = Selection
   With obj_Range
     .Font.Name = "Times New Roman"
     .Font.Size = 15
     .Font.Color = vbRed
     .Characters(1, 1).Font.Italic = True
   End With
Свойства Range
• Formula, FormulaR1C1 - формулы в ячейках
    • Range("A1").Formula = "=$A$2+$A$3"

•       Interior - внешний вид ячейки
    •    Range("A1").Interior.Color = vbRed

•       Name - работа с именованными диапазонами
•       Value - содержимое ячейки
    •    Dim obj_Cell As Range
          For Each obj_Cell In ActiveSheet.Range("A1:E8")
           If obj_Cell.Value < 0 Then
             obj_Cell.Value = Abs(obj_Cell.Value)
             obj_Cell.Interior.Color = vbCyan
           End If
          Next
Еще свойства
• End, Errors, HasFormula, Locked, Next, NumberFormat
• Offset
 • Worksheets("Лист1").Activate
   ActiveCell.Offset(rowOffset:=-3, columnOffset:=-3).Activate
• Orientation
 • oRange.Orientation = -45
• PageBreak
 • Worksheets("Лист1").Rows(50).PageBreak = xlPageBreakManual
• Resize
 • oRange.Resize(oRange.Rows.Count + 1, oRange.Columns.Count + 1).Select
• ShrinkToFit, Style, Text, Validation, WrapText
Практика: примеры кода
Изучите содержимое файлов
15_nn.xlsm
в папке …Students !
Подводим итоги
• Wokrbooks, Workbook, Worksheets и
  Worksheet имеют достаточный набор
  методов и свойств
• Вся работа с ячейками в Excel производится
  с использованием объекта Range
Вопросы?
Контрольные вопросы
• Какие методы и свойства коллекции
  Workbooks вы знаете?
• Как создать обработчики событий
  объекта Workbook?
• Как получить объект Range?
• Какие методы и свойства Range
  наиболее полезны?

Vba 06

  • 1.
    Модуль 6. Работа скнигами, листами и ячейками
  • 2.
    О чем мыузнаем Коллекция Workbooks и объект Workbook Коллекция Worksheets и объект Worksheet объект Range
  • 3.
    Получение сслки накнигу • Три способа получения ссылки: • Debug.Print Workbooks("Смета.xls").FullName • Debug.Print ActiveWorkbook.Name • Debug.Print ThisWorkbook.Name • Создание книги: • Dim oWbk As Workbook Set oWbk = Workbooks.Add() • Открытие книги: • Dim oWbk As Workbook Set oWbk = WorkBooks.Open("C:mybook1.xls")
  • 4.
    Стандартная работа скнигами • Add() создает новую книгу и делает ее активной • Close() закрывает все открытые книги • Open() открывает указанную книгу • Основной параметр - имя открываемой книги
  • 5.
    Специальные методы коллекции Workbooks •Только в самых простых случаях • OpenDatabase() • открывает базу данных • выполняет запрос к ней • напрямую открывает таблицу или представление • результаты запроса помещает как импортированные внешние данные в новую автоматически созданную книгу • OpenText() — в качестве источника выступает текстовый файл • OpenXML() — то же, но с XML- файлом
  • 6.
    Свойства коллекции Workbooks •Count – количество открытых книг • Item – позволяет обращаться к отдельной книге в коллекции • идентификатор - ее индекс или имя MsgBox "Открыто" + Str(Workbooks.Count) + _ " книг" For i = 1 To Workbooks.Count MsgBox Workbooks.Item(i).Name + _ " имя открытой книги №" + Str(i) Next i
  • 7.
    Свойства объекта Workbook •Name, CodeName, FullName • Name – имя файла книги • FullName – имя файла книги вместе с полным путем к нему • CodeName – как эта книга называется в коде • можно посмотреть в окне Project Explorer • открыть свойства книги в окне Properties, в строке (Name) • Path – полный путь в файловой системе к книге Excel
  • 8.
    Разные имена книги MsgBox"Кодовое имя текущей книги: " + _ ActiveWorkbook.CodeName + Chr(13) + _ "Имя текущей книги: " + _ ActiveWorkbook.Name + Chr(13) + _ "Полное имя книги: " + _ ActiveWorkbook.FullName
  • 9.
    Свойства объекта Workbook • Charts, Sheets, ActiveChart, ActiveSheet, Custo mViews, BuiltinDocumentProperties и CustomDocumentProperties, Windows, WebOp tions – возвращают одноименные коллекции соответствующих объектов • ConflictResolution – определяет, как будут разрешаться конфликты изменения данных • SaveAs(), ExclusiveAccess() • MultiUserEditing • UserStatus
  • 10.
    Свойства объекта Workbook •FileFormat • Names For Each Item In ThisWorkbook.Names Debug.Print Item.Name Next
  • 11.
    Методы объекта Workbook •Очевидные методы Activate(), Close(), Save(), SaveAs(), PrintOu t(), Protect() и Unprotect()
  • 12.
    События объекта Workbook Двойнойщелчок на объекте ThisWorkbook
  • 13.
    События объекта Workbook PrivateSub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Range) MsgBox "Вы отредактировали даные на листе: " & _ Sh.Name & ", в ячейке " & Target.Address & _ ". Теперь ячейка содержит следующие данные: " & _ Target.Value End Sub
  • 14.
    Коллекция Worksheets • содержитлисты открытой книги • Создание листа: • Add(Before, After, Count, Type) • ThisWorkbook.Worksheets.Add • ActiveWorkbook.Worksheets.Add _ Count:=Val(InputBox("Введите количество листов"))
  • 15.
    Создание листа Dim oExcelAs New Excel.Application 'Запускаем Excel oExcel.Visible = True 'Делаем его видимым Dim oWbk As Excel.Workbook Set oWbk = oExcel.Workbooks.Add() 'Создаем новую книгу Dim oSheet As Excel.Worksheet Set oSheet = oWbk.Worksheets.Add() 'Создаем новый лист oSheet.Name = "Новый лист" 'Присваиваем ему имя
  • 16.
    Копирование листа • Впределах книги • ActiveWorkbook.ActiveSheet.Copy _ After:=Worksheets("Данные") • В новой книге • ActiveWorkbook.ActiveSheet.Copy
  • 17.
    Удаление и перемещение •ActiveWorkbook.Worksheets.Item(1).Delete • ActiveWorkbook.ActiveSheet.Move _ Before:=Worksheets("Данные") • Возможен параметр After
  • 18.
    Поиск нужного листа DimoExcel As New Excel.Application 'Запускаем Excel oExcel.Visible = True 'Делаем его видимым Dim oWbk As Excel.Workbook Set oWbk = oExcel.Workbooks.Add() 'Создаем новую книгу Dim oSheet As Excel.Worksheet Set oSheet = oWbk.Worksheets.Item("Лист1") 'Находим Лист1 oSheet.Name = "Новый лист" 'Присваиваем ему имя "Новый лист"
  • 19.
    Свойства коллекции Worksheets •Привычные нам свойства и методы коллекций VBA • Сount, Item, Add(), Delete() • специфический метод FillAcrossSheets() • копирование объекта Range (полностью, только содержимое или только оформление) во все листы текущей книги
  • 20.
    Объект Worksheet • всечасто используемые методы Workheet уже знакомы по описаниям предыдущих объектов и коллекций Excel • Activate • Calculate • Copy, Delete, Move • Select • Scenarios • SetBackgroundPicture • PivotTables – коллекция сводных таблиц, расположенных на листе • ShowAllData показывает все содержимое рабочего листа • отменяет скрытие данных при фильтровании и т.д.
  • 21.
    Методы объекта Worksheet •Paste вставляет 'Копируем выделенную область содержимое буфера 'в буфер обмена обмена в указанную Application.Selection.Copy область 'Выделяем ячейку A3 • Копирование в буфер Range("A3").Select обмена – метод Copy 'Вставляем содержимое буфера объекта Range (или ActiveSheet.Paste объекта Selection) 'Теперь выделяем диапазон ячеек, 'в котором хранятся исходные данные • PasteSpecial осуществляет Range("A2:F2").Select специальную вставку Application.Selection.Copy • Protect и Unprotect – Range("A4").Select защита и снятие защиты 'Вставляем значения = без формул Selection.PasteSpecial_ Paste:=xlPasteValues
  • 22.
    Свойства объекта Worksheet •С помощью Cells можно обращаться к каждой конкретной ячейке по отдельности • ActiveSheet.Cells(1, 5) = 8 • EnableCalculation • EnableSelection • Next и Previous – перемещение по листам книги • PageSetup • Protection… • QueryTables – таблицы запросов
  • 23.
    Свойства объекта Worksheet •Range – работа с ячейками и диапазонами ячеек • ActiveSheet.Range("E1") = 4 • Dim MyCell As Variant For Each MyCell In ActiveSheet.Range("A1:K100") MyCell.Value = MyCell.Value + 1 Next • UsedRange – заполненные ячейки • Visible – скрытие и отображение листов • Type • xlWorksheet или xlChart
  • 24.
    События объекта Worksheet •Практически Private Sub Worksheet_SelectionChange(ByVal Target As Range) полностью 'Для хранения пароля идентичны Dim str_Pass As String аналогичным str_Pass = ActiveSheet.Range("A2") событиям для If Len(str_Pass) >= 8 Then _ Workbook ActiveSheet.Range("B2") = "Надежный пароль" • Самое важное If Len(str_Pass) < 8 And Len(str_Pass) >= 5 Then _ событие – Change ActiveSheet.Range("B2") = _ • BeforeRightClick и "Пароль средней надежности" BeforeDoubleClick If Len(str_Pass) < 5 Then _ ActiveSheet.Range("B2") = _ "Ненадежный пароль« End Sub
  • 25.
    Объект Range • наиболеечасто используемый объект в иерархии объектной модели Excel • может представлять одну ячейку, несколько ячеек • несмежные ячейки или их наборы • целый лист • www.microsoft.com/support - 22 способа получения объекта Range
  • 26.
    Получение объекта Range •1-й способ • Dim oRange As Range Set oRange = Worksheets("Лист1").Range("A1") • Dim oRange As Range Set oRange = Worksheets("Лист1").Range("A1:D10") • 2-й способ • Dim oRange As Range Set oRange = Worksheets("Лист1").Cells(1, 4) • Dim oRange Set oRange = Range(Cells(1, 1), Cells(5, 3)) • Dim obj_MyCell As Range Set obj_MyCell = ActiveSheet.Cells(5, 5) obj_MyCell.Select
  • 27.
    Как обратиться кячейке • По имени • ActiveSheet.Range("A2").Select • ActiveSheet.Range("A2:E2").Select ActiveSheet.Range("A2:E4").Select • По координатам • ActiveSheet.Cells(5,1).Select • ActiveSheet.Range(Cells(5, 4), _ Cells(7, 5)).Select
  • 28.
    Как обратиться кячейке • С использованием переменных For i = 1 To 3 For j = 1 To 3 ActiveSheet.Cells(i, j).Select Application.Wait (Now + _ TimeValue("0:00:01")) p=p+1 Selection = p Next j Next i ActiveSheet.Range("A1:E5").Clear
  • 29.
    Методы Range • Activate– активация ячейки • Range("A1:E5").Select • Range("C2").Activate • AddComment – добавляем комментарии к ячейкам • Range("C3").AddComment ("Проверка комментария") • AutoFit – автонастройка ширины столбцов и высоты строк • ActiveSheet.Range("A1:E1").Columns.AutoFit • ActiveSheet.Range("A:E").Columns.AutoFit
  • 30.
    Методы Range • Clear,ClearComments, ClearContents, ClearFormats – очистка и удаление • ActiveSheet.Range("A1:E5").Clear Activesheet.Cells.Select Selection.Clear • Copy, Cut, PasteSpecial – буфер обмена • Delete – удалить диапазон
  • 31.
    Merge, UnMerge – объединениеячеек 'Заполняем область C3:L2 'Выравниваем размер столбцов 'случайными целыми числами ActiveSheet.Range("C:L").Columns.AutoFit For i = 1 To 10 'Записываем название таблицы For j = 1 To 10 'в ячейку верхней строчки ActiveSheet.Cells(i + 2, j + 2) = _ Range("C2") = "Название таблицы" Int(Rnd * 100) 'Объединяем ячейки над таблицей Next j Range("C2:L2").Merge Next i
  • 32.
    Select – выделениеячейки Dim obj_Range As Range Dim num_Sum 'Обращаемся к каждой ячейке 'в выделенной области For Each obj_Range In Selection.Cells num_Sum = num_Sum + Val(obj_Range) Next MsgBox ("Сумма выделенных ячеек: " & _ num_Sum)
  • 33.
    Еще методы • AutoFill() • Replace() • AutoFormat() • Show() • BorderAround() • ShowDependents() • Consolidate() • ShowErrors() • CopyFromRecordset() • Sort() • DataSeries() • Dirty() • Speak() • FillDown(), FillUp(), FillLeft(), FillRig • SpecialCells() ht() • Set oRange2 = • Find() oRange.SpecialCells(xlCellTypeBlanks) • GoalSeek() oRange2.Select 'Проверяем, так ли это • Justify() • SubTotal() • Parse() • Table() • PrintOut() и PrintPreview() • TextToColumns()
  • 34.
    Свойства Range • Address- адрес ячейки в формате A1 Dim num_Row Dim num_Col Dim MyRange As Range num_Row = Val(InputBox("Введите столбец")) num_Col = Val(InputBox("Введите строку")) Set MyRange = _ ActiveSheet.Cells(num_Row, num_Col) MsgBox (MyRange.Address + _ " - имя ячейки " & _ " с индексами " & num_Row & " и " & num_Col)
  • 35.
    Свойства Range • Areas- работа с несмежными выделенными областями • If Selection.Areas.Count > 1 Then Debug.Print "Диапазон с несмежными областями" End If • Characters – меняем фрагменты текста или их формат в ячейке, не затрагивая остальные данные • чтобы ввести текст в ячейку A1 и изменить цвет первой буквы Dim oRange As Range Set oRange = Range("A1") oRange.Value = "Мой текст" oRange.Characters(1, 1).Font.Color = vbRed
  • 36.
    Свойства Range • Areas- работа с несмежными выделенными областями • Borders - управление границами ячеек • Cells, Columns, Rows - ячейки, столбцы, строки • num_Rows = obj_Range.Rows.Count • Dim obj_Range As Range Set obj_Range = ActiveSheet.Range("B2:F7") For i = 1 To obj_Range.Rows.Count For j = 1 To obj_Range.Columns.Count obj_Range.Cells(i, j) = _ Int(Rnd * 100) Next j Next i
  • 37.
    Свойства Range • CurrentRegion- область, заполненная данными • Worksheets("Лист1").Activate ActiveCell.CurrentRegion.Select • Characters, Font - форматирование текста • Dim obj_Range As Range Set obj_Range = Selection With obj_Range .Font.Name = "Times New Roman" .Font.Size = 15 .Font.Color = vbRed .Characters(1, 1).Font.Italic = True End With
  • 38.
    Свойства Range • Formula,FormulaR1C1 - формулы в ячейках • Range("A1").Formula = "=$A$2+$A$3" • Interior - внешний вид ячейки • Range("A1").Interior.Color = vbRed • Name - работа с именованными диапазонами • Value - содержимое ячейки • Dim obj_Cell As Range For Each obj_Cell In ActiveSheet.Range("A1:E8") If obj_Cell.Value < 0 Then obj_Cell.Value = Abs(obj_Cell.Value) obj_Cell.Interior.Color = vbCyan End If Next
  • 39.
    Еще свойства • End,Errors, HasFormula, Locked, Next, NumberFormat • Offset • Worksheets("Лист1").Activate ActiveCell.Offset(rowOffset:=-3, columnOffset:=-3).Activate • Orientation • oRange.Orientation = -45 • PageBreak • Worksheets("Лист1").Rows(50).PageBreak = xlPageBreakManual • Resize • oRange.Resize(oRange.Rows.Count + 1, oRange.Columns.Count + 1).Select • ShrinkToFit, Style, Text, Validation, WrapText
  • 40.
    Практика: примеры кода Изучитесодержимое файлов 15_nn.xlsm в папке …Students !
  • 41.
    Подводим итоги • Wokrbooks,Workbook, Worksheets и Worksheet имеют достаточный набор методов и свойств • Вся работа с ячейками в Excel производится с использованием объекта Range
  • 42.
  • 43.
    Контрольные вопросы • Какиеметоды и свойства коллекции Workbooks вы знаете? • Как создать обработчики событий объекта Workbook? • Как получить объект Range? • Какие методы и свойства Range наиболее полезны?