.
Компьютер для блондинок. Мы написали полезный макрос (Selection, MoveRight, MoveLeft, TypeText).
Автор megabax   
26.11.2009 г.
Привет

Мы написали полезный макрос (Selection, MoveRight, MoveLeft, TypeText).

- Что интересное ты покажешь нам нам это раз? - спросила Лена.

- Да, надеюсь, это будет не "Hello world!", как в прошлый раз, - добавила я.

- Сегодня мы напишем кое что посложнее, - заверил нас Коля и открыл Word.

- Что, опять макросы будем писать? - задала вопрос Лена.

- Да, потому что макросы это самое легкое. Как записать его вы помнить, да?

- Да, нужно войти в меню "Сервис" -> "Макрос" -> "Начать запись", - сказала я.

- Да, верно, - с этими словами Коля произвел эти действия и набрал:

Это наша вторая программа. Она будет посложней.

Затем он выделили слово "программа" жирным и остановил запись, после чего показал нам текст макроса:

Sub НашаВтораяПрограмма()
'
' НашаВтораяПрограмма Макрос
' Макрос записан 27.09.2009 admin
'

      Application.Keyboard (1049)
      Selection.TypeText Text:= "Это наша вторая программа. Она будет посложней. "
      Selection.MoveLeft Unit:=wdCharacter, Count:=32
      Selection.MoveRight Unit:=wdCharacter, Count:=9, Extend:=wdExtend
      Selection.Font.Bold = wdToggle
End Sub

- Это программа, - сказал Коля, - которая выводит текст "Это наша вторая программа. Она будет посложней. " и делает слово "программа" жирным шрифтом. Посмотрите, как она устроена. Видите строку

Selection.TypeText Text:= "Это наша вторая программа. Она будет посложней. "

Эта строка как раз и выводит на экран надпись. А следующая

Selection.MoveLeft Unit:=wdCharacter, Count:=32

сдвигает курсор на 32 позиции влево.

- А ниже нее на 9 позиций вправо? - Предположила я.

- Совершенно верно.

- А почему так, а не просто на 23 позиции влево? - спросила Лена.

- А ты посмотри на эту строчку внимательнее. видишь отличия?

- Да, там есть Extend:=wdExtend.

- Вот как раз этот модификатор "Extend:=wdExtend" обозначат, что курсор нужно двигать с выделением текста. Как будьто мы его мышкой выделили. Заметили, что вправо я двигал курсор уже держа нажатой клавишу Shift?

- Да, заметили, - ответили мы враз.

- А "Selection.Font.Bold = wdToggle" - это, наверное, сделать текст жирным, - предположила Лена.

- Совершенно верно, - ответил Коля

- Ладно, хорошо, - говорю я, - а какая от всего этого практическая польза?

- Ну, можно, например, написать программку, которая выделяет жирным десять символов слева от курсора, - произнес программист.

- А зачем?

- Ну, как зачем? Что бы научиться программировать...

- Стоп стоп! - вмешалась Лена, - я так понимаю, что Юлька хочет написать программу, которая будет делать что то нужное. Юль, я тебя правильно поняла?

- Да, - ответила я.

- Тогда давайте создадим макрос, который выделяет не 10 букв слева от курсора, а целое слово. Коль, это можно устроить?

Программист на несколько секунд задумался, словно зависший компьютер, затем уверенно и радостно произнес:

- Легко!

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

Sub Макрос6()
'
' Макрос6 Макрос
' Макрос записан 27.09.2009 admin
'

      Selection.MoveLeft Unit:=wdWord, Count:=1
      Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
      Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
      Selection.MoveRight Unit:=wdWord, Count:=1, Extend:=wdExtend
      Selection.Font.Bold = wdToggle
End Sub
 

 - Ты же сказал, что надо нормально называть программы, а не "Макрос1, Макрос 2 ...", - сказала Юлька, увидев в тексте слово "Макрос6".

- Да, абсолютно верно.

Он исправил название на "ВыделениеСлова", затем переключился на Word, зашел в меню "Сервис" -> "Макрос" -> "Макросы...".  Открылось вот такое окно:

Selection, MoveRight, MoveLeft, TypeText

- Вот, - сказал Коля, - название изменилось. Если выделить макрос и нажать выполнить, то программа отработает, будет выделено слово слева от курсора.

- Это все хорошо, - говорю я, - но только не удобно как то так по извратному макрос вызывать. Его нельзя на "горячую клавишу" повестить?

Программист немного подумал, потом сказал:

- Ну, можно попробовать записать новый макрос, но заранее при этом назначить ему "горячую" клавишу, а потом просто в него, вместо того, что комп туда назаписывал, вставить нашу программу.

- А попроще нельзя?

- К сожалению, если мы заранее не назначили "горячую клавишу" на макрос, то назначить уже нельзя. Только вот таким извратным способом.

- Дурдом какой то, - произнесла Лена.

- Ладно, нам пора. Вижу, польза от макросов есть, - сказала я, - но программировать мы еще пока не начинали, только все макросы да макросы создаем.

- Ладно, в следующий раз  уже программу будем делать.

 

Последнее обновление ( 12.05.2013 г. )