Добавить в цитаты Настройки чтения

Страница 163 из 299

Selection.Wholestory

Скорее всего, это — переведенная на язык VBA при записи макроса команда Выделить все. В самом деле, ведь первое действие, выполненное в процессе записи — именно выделение всего текста. Подтвердить это нетрудно, просто поставив курсор на слово "WholeStory" и нажав кнопку вызова помощи F1. Справка языка VBA устроена очень удобно — при ее вызове из редактора VBA она "смотрит", не стоит ли курсор на одном из слов, являющихся командой VBA, и, если курсор стоит именно на таком слове, то выводится справка, относящаяся к этой самой команде (рис. 3.1).

Рис. 3.1. Вот что показывает справка по слову WholeStory

Немножко непонятный текст, но при помощи словаря удастся перевести, что эта команда расширяет выделение на весь текст.

Небольшое отступление

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

Как уже неоднократно упоминалось, язык VBA называется объектно-ориентированнным. Такое название дано этому языку, как, впрочем, и большому количеству других современных языков программирования, из-за особого строения его команд (более подробно синтаксис VBA был описан во второй главе). Типичная команда Visual Basic имеет такой вид: <Объект>.<Объект, входящий в первый объект>.<…>.<Тот объект, с которым нужно произвести действие>. «Собственно действие>. Иными словами, каждая команда пишется как бы "с конца": вначале определяется то, над чем надо произвести действие — объект, а затем само действие — метод. Разделителями компонентов команды служат точки. Вот пример такой команды:

Selection.Font.Size = 12

Эта команда устанавливает размер шрифта во всем выделенном тексте в 12 пунктов. У объекта Selection (то есть выделенная в данный момент часть текста) есть подобъект Font — шрифт выделенного текста, а у подобъекта Font — свойство Size. Свойство Size тоже можно считать подобъектом. Знак "=" — это оператор присваивания, в данном случае свойству Size объекта Font объекта Selection присваивается значение 12 — размер шрифта во всем выделенном тексте устанавливается в 12 пунктов.

Если в документе ничего не выделено, то в 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" означает "абзац".

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