Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Основные свойства объекта Range.



Свойство Описание
End Позиция последнего символа фрагмента.
Start Позиция первого символа фрагмента.
Font Возвращает объект Font (шрифт). Например, myR.Font.Name = "Arial"
Information Информация о фрагменте. Значение зависит от аргумента. Список возможных значений аргумента приведен в статье «WdInformation Enumeration» справочной системы. Например, так мы можем проверить, что фрагмент является таблицей и узнать количество строк и столбцов в этой таблице: If myR.Information(wdWithInTable) Then R = myR.Information(wdMaxNumberOfRows) C = myR.Information(wdMaxNumberOfColumns) End If
Text Неформатированный текст фрагмента. Например, mуR.Text = "Новое значение"
Characters, Words, Paragraphs, Sections, Rows, Columns, Tables и т.д. Коллекции элементов текста фрагмента.
Find Возвращает объект Find, который используется в операциях поиска и замены. Например, найдем в myR слово "VB" и выделим его полужирным шрифтом: myR.Find.Execute FindText:= "VB", Forward:=True If myR.Find.Found = True Then myR.Bold = True Все вхождения строки "VB" в myR заменим на "VBA": myR.Find.Execute FindText:= "VB", ReplaceWith:= "VBA", _ Replace:=wdReplaceAll

 

Объект Selection

Объект Selection указывает на выделенную часть документа. Если выделение отсутствует, то Selection – это позиция курсора в документе. Создается объект Selection с помощью метода Select других объектов.

Объекты Range и Selection не зависят друг от друга. Вы можете определить много объектов Range, используя различные переменные, и манипулировать фрагментами документа в программе, не выделяя их. Объект Selection уникален. Нельзя создать несколько объектов Selection. Доступ к объекту производится через свойство Selection объекта Application.

 

Применение VBA для решения практических задач

Рассмотрим несколько примеров, иллюстрирующих возможности применения VBA для решения практических задач.

Пример 12.1

Создадим в Microsoft Excel функцию пользователя, которая в указанном диапазоне подсчитывает количество ячеек, значения которых соответствует заданному шаблону.

Шаблон будем задавать в виде текстовой строки. В строке шаблона можно использовать специальные символы шаблона, приведенные в табл. 12.33

Таблица 12.33

Символ шаблона Символ строки
? любой одиночный символ
* любое количество символов или отсутствие символа
# любая одиночная цифра (0 – 9)
[список] любой одиночный символ, входящий в список
[!список] любой одиночный символ, не входящий в список

Для создания функции перейдите в редактор Visual Basic, откройте программный модуль, в который вы хотите поместить функцию, или добавьте новый программный модуль. Поместите в этот модуль следующий текст:

Public Function СчетШаблон(Диапазон As Range, Шаблон As String)

Dim k As Integer, r

k = 0

For Each r In Диапазон

If r Like Шаблон Then k = k + 1

Next

СчетШаблон = k

End Function

В нашей функции мы воспользовались операцией сравнения строк Like, имеющейся в VBA. Шаблон задается в соответствии с синтаксисом VBA. В результате получилась простая, но очень полезная для статистической обработки текстовых данных функция.

Чтобы добавить описание функции, которое выводится в окне Мастер функций, откройте окно Макрос (вкладка Разработчик), введите название функции (СчетШаблон) в поле Название макроса, щелкните на кнопке Параметры. Введите описание функции в поле Описание.

Вызвать функцию на рабочем листе можно с помощью мастера функций. Она находится в категории Определенные пользователем.

На рис.12.1 показано использование функции на рабочем листе. Строка шаблона в данном случае имеет вид "Мо*17""*". Среди наименований товаров мы ищем мониторы с длиной диагонали 17". Чтобы задать символ «"» внутри текстовой константы, потребовалось указать его дважды, чтобы было понятно, что это не конец строки.

Рис. 12.1 Использование функции пользователя

Пример 12.2

Пусть на рабочем листе Excel, начиная с ячейки A1, расположена таблица с результатами экзаменов. Напишем макрос в Excel, который создаст новый документ Word, поместит в него заголовок «Ведомость» и таблицу, скопированную из Excel.

Чтобы создать такой макрос, перейдите в редактор Visual Basic (в Excel), откройте существующий или создайте новый программный модуль, в котором будет находиться макрос. Поместите в этот модуль тест следующей процедуры:

Public Sub PrintToWord()

Dim wrd As Word.Application 'Object

Set wrd = CreateObject("Word.Application")

With wrd

.Visible = True

.Documents.Add

End With

With wrd.Selection

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.Font.Bold = wdToggle

.Font.Size = 16

.TypeText Text:="Ведомость"

.TypeParagraph

End With

Range("A1").CurrentRegion.Copy

With wrd.Selection

.TypeParagraph

.Paste

.Tables(1).AutoFormat Format:=wdTableFormatGrid3

.Tables(1).Select

.Font.Size = 12

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.ParagraphFormat.FirstLineIndent = CentimetersToPoints(0.44)

.Columns.Width = InchesToPoints(1.5)

.Rows(1).Select

.Font.Bold = True

End With

Set wrd = Nothing

End Sub

Особенностью этого макроса является то, что мы в Excel используем объекты другого приложения (Word). Чтобы это стало возможным, выполните команду Tools / References, в открывшемся окне найдите строку Microsoft Word 14.0 Object Library (вместо 14.0 на вашем компьютере может быть другая версия), поставьте рядом с ней галочку (щелкните мышью) и нажмите OK.

Все обращения к объектам Word должны начинаться с главного объекта Word.Application. В нашем случае его опускать нельзя, так как по умолчанию будет использоваться объект Excel.Application с другими свойствами и методами. При работе с объектами Excel объект Excel.Application можно не указывать, так как макрос создан в Excel. Объект Word.Application в макросе создает функция CreateObject. Она запускает новый экземпляр приложения Word и возвращает ссылку на созданный объект, которая сохраняется в переменной wrd. Именно эта переменная используется в программе для доступа к объектам Word.

Информация передается из рабочей книги в документ Word как обычно через буфер обмена. В макросе для этой цели используются методы Copy и Paste соответствующих объектов.

Методы TypeText и TypeParagraph объекта Selection вставляют текст и пустой абзац в выделенный фрагмент документа.

Довольно много инструкций макроса связаны с форматированием. Если вы хотите узнать какому свойству, какое значение нужно присвоить, чтобы было выполнено необходимое форматирование, то запишите макрос, выполняющий необходимые действия, с помощью команды Запись макроса и проанализируйте его текст.

Чтобы выполнить макрос, перейдите на лист с данными и выполните команду Разработчик/ Макросы. Найдите в списке имя макроса PrintToWord и нажмите Выполнить. Если в этом окне выбрать Параметры, то макросу можно назначить сочетание клавиш, которое будет использоваться для вызова макроса.

Пример 12.3

В рабочей книге имеется таблица с информацией о получателях, состоящая их двух столбцов: Получатель и Адрес (Лист1), и таблица, содержащая названия всех улиц (Лист2). Данные, находящиеся на этих листах, показаны на рис 12.2.

Рис. 12.2. Данные, находяшиеся на листах Лист1 и Лист2

Создадим диалоговое окно для ввода информации в таблицу получателей. Вид окна приведен на рис.12.3.

Рис. 12.3. Диалоговое окно для ввода данных в таблицу

Чтобы создать такое окно, перейдите в редактор Visual Basic. Добавьте к проекту модуль формы. В нашем проекте имя этой формы – UserForm1. Разместите в форме элементы управления: 4 поля для ввода фамилии (TextBox1), дома (TextBox2), корпуса (TextBox3) и квартиры (TextBox4); поле со списком для ввода названия улицы (ComboBox1); 5 элементов Label, которые используются для вывода поясняющих надписей рядом с предыдущими элементами; кнопки Добавить (CommandButton1) и Выход (CommandButton2).

В окно кода формы поместите следующий текст:

Private Sub CommandButton1_Click()

ActiveCell.Value = TextBox1.Text

If Right(ComboBox1.Text, 4) = "пер." Or _

Right(ComboBox1.Text, 6) = "бульв." Then

S = ComboBox1.Text

Else

S = "ул. " & ComboBox1.Text

End If

S = S & ", дом " & TextBox2.Text

If TextBox3.Text <> "" Then S = S & ", корп. " & TextBox3.Text

S = S & ", кв." & TextBox4.Text

ActiveCell.Next.Value = S

Cells(ActiveCell.Row + 1, ActiveCell.Column).Activate

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

End Sub

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

Процедура CommandButton1_Click выполняется, когда будет нажата кнопка Добавить. Она переносит данные из формы на рабочий лист. Содержимое поля TextBox1 записывается в активную ячейку рабочего листа, сформированный адрес в соседнюю с ней ячейку справа. Для доступа к этой ячейке используется свойство Next. Активной становится ячейка, находящаяся в следующей строке, а все поля очищаются.

Процедура CommandButton2_Click выполняется, когда будет нажата кнопка Выход. С помощью метода Hide форма убирается с экрана.

Чтобы форму было удобно вызывать при работе с таблицей, поступим следующим образом. В программном модуле (не в модуле формы!) создадим следующий макрос:

Public Sub AdrInput()

UserForm1.ComboBox1.RowSource = _

"Лист2!" & Лист2.Range("A3").CurrentRegion.Address

UserForm1.Show

End Sub

В макросе AdrInput сначала элемент ComboBox1 заполняется значениями, а затем форма выводится на экран. Для заполнения списка ComboBox1 используется свойство RowSource, которому присваивается ссылка на диапазон рабочего листа Лист2 с названиями улиц (в виде текстовой строки). Так как макрос находится не в модуле формы, то для доступа к элементу мы сначала должны указать имя формы, а затем после точки имя элемента. По условию задачи известно, что названия улиц располагаются, начиная с ячейки A3. Используя для этого диапазона свойство CurrentRegion, получаем новый диапазон, содержащий все названия улиц. Такой прием позволяет менять список улиц (добавлять, удалять), программа не зависит от его размера. Свойство Address возвращает текстовую строку, соответствующую ссылке на вычисленный диапазон, например, "A3:A15". Добавив с помощью операции конкатенации к полученной строке имя листа, мы получили нужное значение свойства. Метод Show выводит форму на экран.

Для вызова макроса на рабочем листе используйте команду Разработчик/ Макросы. Можно назначить макросу комбинацию клавиш (Разработчик/ Макросы/ Параметры), тогда вызывать его при вводе данных будет еще удобнее.

Вопросы для самоконтроля

1. Какой язык используется в качестве встроенного языка программирования в продуктах Microsoft Office.

2. Назовите основные типы данных языка Visual Basic for Application.

3. Каким условиям должны удовлетворять имена переменных в программе.

4. Какая переменная называется глобальной. Как объявить глобальную переменную.

5. Как объявляются константы.

6. Назовите основные операции языка. Когда используется операция Is.

7. Что такое массив. Как объявить массив в программе. Как объявить динамический массив.

8. Какие инструкции существуют в языке для программирования ветвлений.

9. Какая разница между циклом For … Next и циклом For Each… Next.

10. Какая разница между циклами Do … Loop While и Do … Loop Until.

11. Что такое процедура. Как в программе создать процедуру. Как вызвать процедуру.

12. Что такое функция. Как в программе создать функцию. Как вызвать функцию.

13. Что значит, параметр передается по ссылке или по значению.

14. Какие способы задания фактических параметров вы знаете.

15. Назовите основные окна редактора Visual Basic.

16. Что такое модуль. Как добавить модуль к проекту.

17. Что такое проект. Как сохранить проект.

18. Что нужно сделать, чтобы создать макрос.

19. Что нужно сделать, чтобы создать функцию пользователя.

20. Что нужно сделать, чтобы создать собственное диалоговое окно.

21. Что такое форма. Как изменить свойства формы.

22. Что такое класс и объект.

23. Что такое свойство объекта. Как изменить свойство формы и элементов управления в режиме проектирования и во время выполнения программы.

24. Что такое метод объекта. Как вызвать метод во время выполнения программы.

25. Что такое событие. Как обработать событие формы или элемента управления в программе.

26. Как создаются новые объекты во время выполнения программы.

27. Для чего используется инструкция With.

28. Что такое коллекция объектов. Какие средства языка для работы с коллекциями вы знаете. Приведите примеры стандартных коллекций Word и Excel.

29. Что такое элементы управления. Какие элементы управления вы знаете.

30. Назовите основные объекты Microsoft Excel.

31. Назовите основные объекты Microsoft Word.

Литература

1. Экономическая информатика: Уч.пос. / Под ред. Д.В. Чистова –М.:Кнорус, 2010. – 512 с.

2. Мельников П.П. Компьютерные технологии в экономике: Учеб. пособ. для студ., обуч. по спец. «Финансы и кредит», «Бух. учет, анализ и аудит», «Налоги и налогообложение», «Мировая экономика». – М.:Кнорус, 2009. – 224 с.

3. Уокенбах Дж. Microsoft Excel 2010. Профессиональное программирование на VBA.: Пер. с англ. – М.:Диалектика, 2011. – 944 с.

4. Король В.И. Visual Basic.NET, Visual Basic 6.0, Visual Basic for Applications 6.0. Языки программирования. Справочник с примерами. – М.: КУДИЦ-ОБРАЗ, 2002. – 496с.

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.