Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

учебник информатика

.pdf
Скачиваний:
542
Добавлен:
13.02.2015
Размер:
16.29 Mб
Скачать

Глава 5. Основы разработки программного обеспечения

менных во всплывающих подсказках, появляющихся после наведения курсора мыши на имя свойства или переменной. Далее программу можно выполнить по одной строке и следить за ее работой. Текст Макроса1 был несколько изменен: добавлено описание константы S и задан вывод значений командой Debug.Print (вывод идет в окно Immediate).

Синтаксические ошибки в тексте программы автоматически выделяются красным цветом с показом окна сообщения об ошибке. Если в меню окна Visual Basic в пункте Tools-Options убрать галочку у строки Auto Syntax Check, выделение ошибок красным цветом останется, но окно сообщений об ошибке появляться не будет.

Контекстная

всплывающая

информация

Рисунок 5.47. Отладочные режимы в окне Microsoft Visual Basic

На странице документа могут быть размещены стандартные объекты Word и объекты ActiveX, присутствующие на вкладке Разработчик Элементы управления (показаны на рисунке 5.48).

421

Глава 5. Основы разработки программного обеспечения

Текст

Рисунок

 

 

 

Поле со списком

 

 

RTF-текст

 

 

 

 

 

 

Переключатель

Список

 

Подпись

 

 

 

Рисунок

 

 

 

Календарь

 

 

Счетчик

 

 

 

 

 

 

Прочие

Флажок

 

 

 

Поле со списком

 

Список

Выключатель

Поле

 

 

 

 

 

 

 

Кнопка

Скроллинг

Рисунок 5.48. Элементы управления для документа Word

Простой пример организации вычислений на странице документа – три объекта типа Поле:

11,1235

+

12,3456

=

23,4691

Двойной щелчок на поле в Режиме конструктора (в котором мы оказываемся, когда выбираем операцию Добавить поле из Элементов управления) перемещает в редактор Visual Basic, в нем создается пустая процедура Private Sub TextBox1_Change(), аналогично для второго поля. Напишем в этих процедурах имя процедуры Calc1 и создадим процедуру расчета. Текст процедур будет выглядеть следующим образом:

Private Sub TextBox1_Change() Calc1

End Sub

Private Sub TextBox2_Change()

Calc1

End Sub

Private Sub Calc1()

On Error Resume Next

TextBox3 = CSng(TextBox1) + CSng(TextBox2)

422

Глава 5. Основы разработки программного обеспечения

If Err <> 0 Then

MsgBox "Задайте число в формате, " & _ "определенном в установках Windows", _

vbCritical, "Ошибка ввода"

End If

End Sub

Для третьего поля в окне Properties зададим свойство Enabled равным False, как показано на рисунке

5.49.

В результате после написания или изменения чисел в объектах

TextBox1 и TextBox2 в поле TextBox3

будет отображаться математическая сумма двух чисел.

Если в процедуре Calc1 написать расчет без преобразования данных в числовое значение

(CSng(TextBox1) или CSng(TextBox1.Value)), т. е.

TextBox3 = TextBox1 + TextBox2,

Рисунок 5.49. Окно свойств объекта

то вместо математической суммы получится сложение двух строковых значений.

Пример с использованием объекта Кнопка – расчет количества таблиц в текущем документе – выглядит следующим образом:

Количество таблиц в документе =

1973

С объектом CommandButton1 связана следующая процедура:

Private Sub CommandButton1_Click() TextBox5 = Tables.Count

End Sub

Далее показаны прочие свойства текущего документа, вписанные в данную страницу процедурой Prop_doc():

Приложение: Microsoft Word

Имя файла: Уч_информатика_АСГ_2009.docm

путь к файлу: D:\ASG\Мой учебник по информатике

Количество абзацев: 9980 Количество слов: 137200 Количество символов: 720834

Количество таблиц: 197

Количество объектов: 278

423

Глава 5. Основы разработки программного обеспечения

Количество полей: 963 Количество стилей: 367

Текст процедуры:

Sub Prop_doc()

With ActiveDocument

.Range(Start:=Selection.End, _ End:=Selection.End).Style = "Программа"

S = S & "Приложение: " &.Application & vbLf

S = S & "Имя файла: " &.Name & vbLf

S = S & "путь к файлу: " &.Path & vbLf S = S & "Количество абзацев: " _

&.Paragraphs.Count & vbLf

S = S & "Количество слов: " &.Words.Count & vbLf

S = S & "Количество символов: " _

&.Characters.Count & vbLf

S = S & "Количество таблиц: " &.Tables.Count & vbLf

S = S & "Количество объектов: " _

&.Shapes.Count & vbLf

S = S & "Количество полей: " &.Fields.Count & vbLf S = S & "Количество стилей: " _

&.Styles.Count & vbLf Selection.TypeText (S)

End With End Sub

Пример более сложной программы в Word, рассчитывающей значе-

ния функции Y = F(X) для X, изменяющегося от Xнач. до Xкои. и для заданного числа точек, показывающей таблицу и диаграмму, приведен далее

(текст скрипта для отдельного документа Word, в котором таблица 1 – исходные данные графика, таблица 2 – результаты расчета точек графика):

Private Sub CommandButton1_Click() Add_Table

Tables(2).Select

N = Shapes.Count

MsgBox N

chart1 = WordBasic.InsertChart

End Sub

Private Sub N_Change()

Calc_h

End Sub

Private Sub XK_Change()

Calc_h

424

Глава 5. Основы разработки программного обеспечения

End Sub

Private Sub XN_Change()

Calc_h

End Sub

Sub Calc_h()

With ActiveDocument

x1 = Val(.XN)

x2 = Val(.XK)

n1 = Val(.N) If n1 <> 1 Then

dx = (x2 - x1) / (n1 - 1) End If

.H = dx End With

End Sub

Sub Add_Table()

Dim X As Currency, Y As Currency

Selection.EndKey Unit:=wdStory With ActiveDocument

If.Tables.Count = 2 Then

.Tables(2).Delete Else

Selection.TypeText vbNewLine End If

Dim Table2 As Table

Set Rng1 = Selection.Range

Set Table2 =.Tables.Add(Rng1, n1+1, 2)

'добавлена таблица в заданном месте Range

'с количеством строк n1+1 и двумя столбцами

Table2.Columns.Width = 50

'задана ширина колонок в таблице

Table2.Borders.OutsideLineStyle = wdLineStyleSingle

Table2.Borders.InsideLineStyle = wdLineStyleSingle

'заданы линии для внешних и внутренних границ

Table2.Cell(1, 1).Range.Text = "X"

'задан текст для ячейки таблицы (1 ряд 1 столбец)

Table2.Cell(1, 2).Range.Text = "Y"

Table2.Cell(2, 1).Range.Text = Format(x1, "##0.00") Table2.Cell(2, 2).Range.Text = Format(Sin(x1), _

"#0.000")

425

Глава 5. Основы разработки программного обеспечения

X = x1

For i = 3 To n1 + 1 X = X + dx

Table2.Cell(i, 1).Range.Text = Format(X, "##0.00") Y = Sin(X)

Table2.Cell(i, 2).Range.Text = Format(Y, "#0.000") Next i

Table2.Select

Selection.Paragraphs.Alignment = wdAlignParagraphRight

' задано выравнивание по правому краю в абзацах таблицы

Table2.Cell(1, 1).Range.ParagraphFormat.Alignment = _ wdAlignRowCenter

' задано выравнивание в ячейке 1 ряд 1 столбец таблицы

Table2.Cell(1, 2).Range.ParagraphFormat.Alignment = _ wdAlignRowCenter

End With

End Sub

Внешний вид таблиц и графика, с которыми связаны приведенные выше скрипты кнопки CommandButton1 следующий:

Xнач. =

 

-3.1415

 

 

 

 

 

 

Xнон. =

 

3.1415

 

 

 

 

 

 

 

N =

 

11

 

 

 

 

H =

 

0.6283

 

 

 

 

 

 

 

 

 

 

 

X

 

Y

 

-3,14

0,000

 

-2,51

-0,588

 

-1,88

-0,951

 

-1,26

-0,951

 

-0,63

-0,588

 

0,00

0,000

 

0,63

0,588

 

1,26

0,951

 

1,88

0,951

 

2,51

0,588

 

3,14

0,000

 

 

 

Поле XN

 

Кнопка

 

 

 

 

 

График

 

 

 

CommandButton1

 

 

 

 

 

 

Поле XK

 

 

 

 

 

 

 

Поле N

 

 

Поле H

 

 

 

 

1.5

 

 

 

 

 

1

 

 

 

 

 

0.5

 

 

 

 

 

0

 

 

 

-4

-2

-0.5

0

2

4

 

 

 

 

 

 

 

-1

 

 

 

 

 

-1.5

 

 

 

426

Глава 5. Основы разработки программного обеспечения

5.3.2.2 Программирование на языке VBA в Microsoft Office Excel

Главный объект системы – Excel.Application, он имеет множество свойств и методов, отличных от Word.Application, некоторые из них показаны на рисунке 5.50.

Рисунок 5.50. Некоторые свойства и методы объекта

Excel.Application (справка VBA Excel)

Объект Application имеет важнейшие свойства:

Cells – ячейка активного листа,

Range – одна ячейка или группа ячеек активного листа,

Columns – вертикальная колонка ячеек активного листа,

Rows – горизонтальный ряд ячеек активного листа,

427

Глава 5. Основы разработки программного обеспечения

Sheets – свойство, которое возвращает ссылку на коллекцию, состоящую из объектов Sheet – множество листов книги со всеми их внедренными объектами (например, диаграммами);

Worksheets – свойство, которое возвращает ссылку на коллекцию, состоящую из объектов Worksheet – листов книги без внедренных объектов,

Selection – ссылка на активный выделенный объект (лист, диапазон ячеек, диаграмму (Chart), ряд, столбец и пр.

При написании программы в редакторе Microsoft Visual Basic системы Access для проекта открытого файла (который в этом случае должен сохраняться, как «Книга Excel с поддержкой макросов» с расширением *.xlsm) при использовании методов и свойств можно опускать название объекта Application. Методы программирования с использованием этих объектов рассмотрены далее на примерах.

Так же, как и в системе Microsoft Word, основы программирования в VBA для системы Excel можно освоить, воспользовавшись методом записи последовательности своих действий – Запись макроса на вкладке Разработчик, причем записываются не только нажатия клавиш, но и операции, выполняемые мышкой. Текст макроса позволяет лучше понять те операции, которые начинающий пользователь выполняет иногда не вполне осознанно, например, щелчок мышкой на ячейке A2 – команда Range("A2").Select и т. п. Конечно же, предполагается, что пользователь знает некоторые английские слова (например, Range – диапазон, Select – выбрать, Selection – выбор, Font – шрифт, Size – размер, Sheet – лист, Cell – ячейка, Characters – символы, Active – активный, Formula – формула, Center – центр, Border – граница, Edge – грань, Alignment – выравнивание …) и основы работы с объектами, тогда текст программы легко читается. Макрос будет содержать те приемы работы с объектами Excel, которые рекомендует к использованию разработчик данной системы, хотя возможны и другие варианты.

Выполним расчет значений функции и построение диаграммы Y = F(X), аналогичный приведенному ранее для Word в разделе 5.3.2.1.

Вид листа Excel, который мы получим в результате всей работы, заранее показан на рисунке 5.51, чтобы далее было легче понимать текст VBA-программ этого примера.

428

Глава 5. Основы разработки программного обеспечения

Рисунок 5.51. Построение графика функции

Запишем макрос для написания программой названия «График функции Y=F(X)» в группе объединенных ячеек A1: H1 и таблицы исходных данных в ячейках A2:B5. Текст макроса (после значительного его сокращения – убраны некоторые значения, принимаемые по умолчанию, добавлены комментарии) будет следующий:

Sub Табл_исх_данных()

' ---- Таблица исходных данных ----

Range("A1:H1").Select Selection.Merge ' объединить ячейки

Selection.HorizontalAlignment = xlCenter

ActiveCell.FormulaR1C1 = "График функции Y=F(X)"

Selection.Font.Size = 16 Range("A2").Select

ActiveCell.FormulaR1C1 = "Xнач = "

ActiveCell.Characters(Start:=2, Length:=3) _

.Font.Subscript = True ' подстрочные символы

Range("A3").Select

429

Глава 5. Основы разработки программного обеспечения

ActiveCell.Formula = "Xкон = "

ActiveCell.Characters(Start:=2, Length:=3) _

.Font.Subscript = True Range("A4").Formula = "N = " Range("A5").Select

Selection.Formula = "Hx = " ActiveCell.Characters(Start:=2, Length:=1) _

.Font.Subscript = True Range("A2:A5").Select

Selection.HorizontalAlignment = xlRight

' ---- Исходные данные ----

Range("B2").Formula = "= -3*PI()" Range("B3").Formula = "= 3*PI()"

Range("B2:B3").Select Selection.NumberFormat = "0.000" Range("B4").Formula = "= 15" Range("B5").Formula = "=(B3-B2)/(B4-1)"

Range("B5").NumberFormat = "0.000" Range("B2:B5").Select Selection.HorizontalAlignment = xlCenter Range("A2:B5").Borders(xlEdgeLeft).LineStyle = _

xlContinuous ' линия по левой границе

Range("A2:B5").Borders(xlEdgeTop).LineStyle = _ xlContinuous

Range("A2:B5").Borders(xlEdgeBottom).LineStyle = _ xlContinuous

Range("A2:B5").Borders(xlEdgeRight).LineStyle = _ xlContinuous

Range("A2:B5").Borders(xlInsideVertical). _

LineStyle = xlContinuous

Range("A2:B5").Borders(xlInsideHorizontal). _ LineStyle = xlContinuous

Range("B2:B4").Select Selection.Interior.Color = 14220508

Selection.Locked = False 'снята зашита с ячеек

Selection.FormulaHidden = False

End Sub

Более сложная задача – создание таблицы значений Y=F(x) и точечной диаграммы для исходных данных, описанных в первой части. При обычном оформлении такого расчета можно изменять Xнач и Xкон, данные таблицы и диаграмма будут соответственно пересчитываться. Если же изменить N

Код

листа

График

Модуль

книги

Рисунок 5.52. Проект VBA

430