- •Объектная модель
- •Полная и неявная ссылка на объект
- •Ссылка на активную рабочую книгу, лист, ячейку, диаграмму и принтер
- •Загрузка инсталлированной надстройки
- •Управление уровнем безопасности
- •Семейство встроенных диалоговых окон
- •Объект FileDialog
- •Методы объекта Application
- •Установка выполнения специфицированной процедуры при нажатии заданной комбинации клавиш
- •Переопределение горячих клавиш приложения
- •Проверка правописания отдельного слова
- •Симулирование ячеек рабочего листа
- •Электронные часы в ячейке рабочего листа
- •Получение данных из закрытой рабочей книги
- •События объекта Application
- •IgnoreReadOnlyRecommended — необязательный параметр, указывающий надо ли отображать предупреждение о том, что книга была сохранена в режиме "только для чтения";
- •Установка и снятие защиты книги
- •Методы объекта Worksheet
- •Объект Protection
- •События объекта Worksheet
- •Добавление к графическому объекту обработчика события Click
- •Примечание
- •Свойства объекта Range
- •Управление стилем границы диапазона и объекта Border
- •Функции rgb и qbColor
- •Доступ к отдельным ячейкам диапазона
- •Выбор элементов на рабочем листе или в книге
- •Объект Characters
- •Объект Comment
- •Определение текущего диапазона
- •Объект Font
- •Объект Interior
- •Установка числового формата
- •Переопределение размеров диапазона
- •Методы объекта Range
- •Табуляция функции
- •Заполнение диапазона по одному значению
- •Специальная вставка
- •Вставка диапазона с транспонированием
- •Бегущая картинка
- •Поиск значения в диапазоне
- •Повторный поиск и поиск всех значений
- •Поиск по формату
- •Замена значений
- •Ввод в диапазон неповторяющихся значений
- •Озвучивание текста
- •Построение графа
- •Пользовательские функции
- •Математические функции
- •Надстройки
- •Где хранятся макросы?
Объект Characters
Свойство Characters объекта Range или Selection возвращает объект Characters, представляющий собой строку указанной длины от указанного символа. Часто применяется, когда надо форматировать содержание не всей строки, а только ее часть.
Characters(Start, Length)
Здесь:
Start, — необязательный параметр, задающий номер первого возвращаемого символа из данной строки;
Length — необязательный параметр, указывающий число возвращаемых символов.
В следующем примере (листинг 5.45) в ячейку А1 выводится строка "Андрей Гарнаев", причем первая часть этой строки "Андрей" выводится полужирным шрифтом зеленого цвета высотой 16, а вторая ее часть "Гарнаев" — курсивным шрифтом красного цвета высотой 14. Кроме того, в рабочий лист вставляется автофигура с текстовым полем, в которое выводится тот же текст так же отформатированный по словам. Автофигура заполняется градиентной заливкой, а вокруг нее создается тень. Текстовое поле делается прозрачным (рис. 5.4).
Листинг 5.45. Форматирование части содержимого ячейки и создание автофигуры
Sub DrawText ()
With Range ("A1")
.Value = "Андрей Гарнаев"
.Characters(1, 6).Font.Bold = True
.Characters(1, 6).Font.Size = 16
.Characters(1, 6).Font.Color = RGB(0, 255, 0)
.Characters(8, 7).Font.Italic = True
.Characters(8, 7).Font.Size = 14
.Characters(8, 7).Font.Color = RGB(255, 0, 0)
End With
ActiveSheet.Shapes.AddShape(msoShapeExplosionl, _
Range("A2").Left, Range("A2").Top, _
Range("F20").Left, Range("F20").Top).Select Selection.ShapeRange.Fill.ForeColor.SchemeColor = 52 Selection.ShapeRange.Fill.BackColor.SchemeColor = 43 Selection.ShapeRange.Fill.TwoColorGradient msoGradientHorizontal, 1
Selection.ShapeRange.Shadow.Type = msoShadow1
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal,_
Range("B9:C13").Left, Range("B9:C13").Top, _
Range("B9:C13").Width, Range("B9:C13").Height).Select
Selection.ShapeRange.Fill.Visible = msoTrue
Selection.ShapeRange.Fill.Transparency = 1#
Selection.HorizontalAlignment = xlCenter
Selection.VerticalAlignment = xlCenter
Selection.Characters.Text = "Андрей Гарнаев"
Selection.ShapeRange.Line.Visible = msoFalse
Selection.Characters.Text = "Андрей Гарнаев"
With Selection.Characters(Start:=1, Length:=7).Font
.Name = "Comic Sans MS"
.FontStyle = "полужирный курсив"
.Size = 14
.Colorlndex = 5
End With
With Selection.Characters(Start:=8, Length:=7).Font
.Name = "Comic Sans MS"
.FontStyle = "полужирный"
.Size = 14
.Colorlndex = 8
End With
Range("A1").Select
E
nd
Sub
Рис. 5.4. Форматирование части содержимого ячейки
Объект Comment
Свойство Сomment объекта Range возвращает объект Сomment (примечание), который при отображении на экране связан с правым верхним углом диапазона. Вручную на рабочем листе примечание добавляется к диапазону выбором команды Вставка ► Примечание.
В коде примечание можно создать методом AddComment объекта Range.
AddComment(Text)
Здесь Text — текст, вводимый в примечание. Объект Сomment является элементом семейства Comments. В табл. 5.19 перечислены свойства объекта Comment, а в табл. 5.20 — его методы.
Таблица 5.19. Свойства объекта Сomment
Свойство |
Описание |
Author Shape |
Возвращает автора примечания Возвращает объект Shape, задающий форму примечания |
Parent |
Возвращает ссылку на диапазон, для которого примечание было создано |
Visible |
Устанавливает, отображается ли примечание при активизации диапазона |
Таблица 5.20. Методы объекта Сomment
Свойство |
Описание |
Delete |
Удаляет примечания |
Next |
Возвращает следующее примечание |
Previous |
Возвращает предыдущее примечание |
Text |
Возвращает текст, отображаемый в примечании |
Итак, метод Text задает текст, выводимый в примечании.
Text(Text, Start, Overwrite) Здесь:
Text — необязательный параметр, который задает текст, выводимый в качестве примечания;
Start — необязательный параметр, который определяет, с какого символа вводится текст в уже существующее примечание. Если параметр опущен, то из примечания удаляется весь ранее введенный текст;
Overwrite — необязательный параметр, принимающий логические значения. Если он равен True, то вводимый текст записывается вместо уже существующего, а если False, то добавляется к уже существующему.
В качестве примера рассмотрим следующую процедуру обработки события Open объекта Workbook, который при открытии рабочей книги в ячейке G4 первого рабочего листа создает комментарий (листинг 7.46, а). При этом, если в этой ячейке уже существовал комментарий, то он удаляется и затем создается по-новому. Процедура же обработки события BeforeDoubieClick объекта Worksheet обеспечивает отображение или скрытие примечания при двойном щелчке на листе (листинг 7.46, б).
Листинг 7.46, а. Создание примечания при открытии книги.
Модуль ЭтаКнига
Private Sub Workbook_Open()
Set r = Worksheets(1).Range("G4").Comment
If Not IsObject(r) Then
Worksheets(1).Range("G4").Comment.Delete
End If
Worksheets(1).Range("G4").AddComment Text:="Очень важно!"
End Sub
Листинг 7.46, 6. Отображение или скрытие примечания при двойном щелчке на листе.
Модуль рабочего листа
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
If Range("G4").Comment.Visible Then
Range("G4").Comment.Visible = False
Else
Range("G4").Comment.Visible = True
End If
End Sub
В качестве еще одного примера приведем процедуру, которая считывает все примечания из данной рабочей книги и выводит их в текстовый файл (листинг 5.47).
Sub WriteCommentsToFile()
Dim cmt As Comment
Dim sh As Worksheet
Open "C:\Test.txt" For Output As #1
For Each sh In ActiveWorkbook.Worksheets
For Each cmt In ActiveWorkbook.Worksheets(sh.Name).Comments
Print #1, "Из " & cmt.Parent.Parent.Name _
& "!" & cmt.Parent.Address _
& " примечание: " _
& cmt.Text
Next
Next
Close #1
End Sub
