Чтение онлайн

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №3
Шрифт:

Если в документе ничего не выделено, то в 12 пунктов устанавливается размер текущего шрифта и следующая набранная буква будет именно такого размера. Если выделен графический объект, то команда будет ошибочной, о чем VBA выдаст соответствующее сообщение.

Кроме того, с помощью подобной команды можно получить информацию о текущем размере шрифта:

а = Selection.Font.Size

После ее выполнения переменная а будет иметь значение, равное размеру шрифта выделенного текста. Как видите, синтаксис команды подобен синтаксису предыдущей.

Если в документе ничего не выделено, то переменная а будет иметь

значение размера шрифта следующего за курсором символа. Если разные части выделенного текста оформлены разными шрифтами, то переменная а будет иметь значение 9999999. Если выделен графический объект, то команда будет ошибочной, о чем VBA выдаст соответствующее сообщение.

With Selection.Font

.Name = "Times New Roman"

.Size = 12

.Colorlndex = wdBlack

End With

Похоже, это что-то, связанное со шрифтом. В самом деле, ведь "Font" по-английски значит "шрифт", a "Selection" — "выделение". По слову "Name" можно Заключить, что в этой команде устанавливается имя шрифта — "Times New Roman", а слово "Size", наверное, устанавливает его размер. " .Colorlndex = wdBlack" — выглядит как команда, устанавливающая цвет шрифта: есть слово "Color" "цвет" и есть слово "Black" — "черный". Но чтобы не гадать попусту, посмотрим справку VBA — поставим курсор на слово "Selection" и нажмем F1 (рис. 3.2).

Рис. 3.2. Справка по слову "Selection"

Используя англо-русский словарь, можно узнать, выделенный текст или точку ввода текста. Посмотрим (рис. 3.3).

Рис. 3.3. Справка по слову "Font"

Что-то маловато информации. Ну, ясно, что шрифт, а как пишется команда, какие у нее могут быть еще параметры? Нажмем-ка на подчеркнутое слово "Font" в тексте — это выведет информацию об объекте "Font" (рис. 3.4).

Рис. 3.4. Справка об объекте "Font"

Ну, теперь все ясно. Даже примеры приведены, — и очень похожие на наш макрос. Посмотрим тогда ссылку "Properties" вверху окна справки — список свойств шрифта, которые можно задать в программе (рис. 3.5).

Рис. 3.5.Список свойств объекта "Font"

Это, кстати, такой же список, как и тот, что выпадает в качестве контекстной подсказки, если при наборе текста программы вручную поставить после слова "Font" точку. Видно, что там есть все свойства шрифта, задаваемые в макросе: и "Name", и "Size", и "Colorlndex". Можно при желании почитать про каждое свойство подробно, но, наверное, лучше разобраться с командой "With", которая встречается и в нашем макросе, и в справке по слову "Font". Ставим на нее курсор и нажимаем F1 (рис. 3.6).

Рис. 3.6. Справка

по слову "With"

Даже на русском (некоторые разделы справки VBA переведены на русский язык). Ну и прекрасно — прочтя справку, узнаем, что "Инструкция With позволяет выполнить последовательность инструкций над указанным объектом, не повторяя задание имени объекта." То есть она позволяет сократить объем кода и облегчить ориентировку программиста в нем, — иначе, без этой функции, рассматриваемый фрагмент кода нашего макроса имел бы вид

Selection.Font.Name = "Times New Roman"

Selection.Font.Size = 12

Selection.Font.Colorlndex = wdBlack

что и выглядит некрасиво, и места больше требует. Примем к сведению.

Идем дальше:

With Selection.ParagraphFormat

.Leftlndent = CentimetersToPoints(0)

.Rightlndent = CentimetersToPoints(0)

.SpaceBefore = 0

.SpaceAfter = 0

.LineSpacingRule = wdLineSpaceSingle

.FirstLinelndent = CentimetersToPoints(1.27)

End With

Это — команда установки параметров выделенных абзацев: отступов, межстрочного интервала, красной строки. Нетрудно получить эту информацию из справки или просто догадаться, — ведь "Paragraph" означает "абзац".

Впрочем, проверим — так ли это. Откроем какой-либо документ и запишем новый макрос — выделив пару абзацев, включим запись макроса и поставим этим двум абзацам отступы сверху, снизу, справа и слева по одному сантиметру, а межстрочный интервал — полуторный. Вот что получилось:

Sub Макрос2

' Макрос записан 26.01.00

With Selection.ParagraphFormat

.Leftlndent = CentimetersToPoints(1)

.Rightlndent = CentimetersToPoints(1)

.SpaceBefore = 1

.SpaceAfter = 1

.LineSpacingRule = wdLineSpacelpt5

.Alignment = wdAlignParagraphJustify

.WidowControl = True

.KeepWithNext = False

.KeepTogether = False

.PageBreakBefore = False

.NoLineNumber = False

.Hyphenation = True

.FirstLinelndent = CentimetersToPoints(1)

.OutlineLevel = wdOutlineLevelBodyText

End With

End Sub

Что-то не то! Код какой-то большой и много новых команд, которых не было Записано в первый раз! Какие-то ".WidowControl", ".KeepWithNext"… Впрочем, ясно, что это свойства абзаца — наверное, "Контроль висячих строк", "Не отрывать от следующего". Но почему же в первый раз записанный код был гораздо меньше, и все было "по делу"?

Сравним оба случая. В прошлый раз все абзацы в документе были оформлены по-разному, а в этот раз оформление обоих абзацев было одинаковым. Может, в этом дело? И действительно, поэкспериментировав еще (уж не буду здесь приводить все тексты), позаписывав макросы при оформлении разнооформленных абзацев и одинаково оформленных, можно прийти к выводу, что в текст записанного макроса попадают те свойства, которые после установки параметров абзацев через диалоговое окно "Формат"-"Абзац" оказываются одинаковыми у всех обрабатываемых абзацев! И неважно, были ли эти свойства установлены такими именно сейчас, или когда-то ранее.

Поделиться:
Популярные книги

На распутье

Кронос Александр
2. Лэрн
Фантастика:
фэнтези
героическая фантастика
стимпанк
5.00
рейтинг книги
На распутье

Идеальный мир для Лекаря 15

Сапфир Олег
15. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 15

Гром над Академией Часть 3

Машуков Тимур
4. Гром над миром
Фантастика:
фэнтези
5.25
рейтинг книги
Гром над Академией Часть 3

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

Проданная невеста

Wolf Lita
Любовные романы:
любовно-фантастические романы
5.80
рейтинг книги
Проданная невеста

Лорд Системы

Токсик Саша
1. Лорд Системы
Фантастика:
фэнтези
попаданцы
рпг
4.00
рейтинг книги
Лорд Системы

Вторая жизнь майора. Цикл

Сухинин Владимир Александрович
Вторая жизнь майора
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Вторая жизнь майора. Цикл

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Имя нам Легион. Том 4

Дорничев Дмитрий
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 4

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Наследница Драконов

Суббота Светлана
2. Наследница Драконов
Любовные романы:
современные любовные романы
любовно-фантастические романы
6.81
рейтинг книги
Наследница Драконов

Вечный. Книга III

Рокотов Алексей
3. Вечный
Фантастика:
фэнтези
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга III

Дурашка в столичной академии

Свободина Виктория
Фантастика:
фэнтези
7.80
рейтинг книги
Дурашка в столичной академии