ТОП 10:

With Selection.Borders(xlEdgeLeft)



.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeTop)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeBottom)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

End With

With Selection.Borders(xlEdgeRight)

.LineStyle = xlContinuous

.Weight = xlThin

.ColorIndex = xlAutomatic

Рис. 11.2. Фрагмент кода макроса "Цвета_и_рамки_ячеек"

Все они связаны с о б р а м л е н и е м ячеек р а м к а м и. К прежним пояснениям теперь добавим:

Selection.Bordersвыбор обрамления,

xlDiagonalDownдиагональ сверху вниз, (xlDiagonalUpдиагональ снизу вверх),

LineStyleстиль (тип) линии, xlNoneнет

Edgeкромка, Left, Right, Top, Bottomслева, справа, сверху, снизу,

Weight- толщина (линии), Thin - тонкий

 

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

 

Задание 4.Попробуйте теперь выполнить пример из п. 8.2 главы 8 (стр. 158). Старайтесь не отступать от предлагаемых там рекомендаций.

Варианты реализации разветвляющихся алгоритмов

С этого момента надо работать только в среде редактора VBA. Текст программ вводится в окно Code, после чего запускается на выполнение, если по ходу ввода программы компилятор VBA не выдавал сообщений о синтаксических ошибках. Впрочем, ошибки могут быть обнаружены и позже - на стадии выполнения.

Задание 5.Составить программу, определяющую принадлежность человека к определённой социальной группе по его возрасту.

Пусть Возраст –целочисленнаяпеременная. Программа должна предлагать ввести возраст и по нему выдавать сообщения "Дошкольник", "Школьник", "Студент", "Специалист" или "Пенсионер".

Решение.Предлагаетсятакой код программы:

Sub СоциальнаяГруппа()

DimВозрастAs Integer

Возраст= InputBox("Укажите, пожалуйста, вашвозраст:")

IfВозраст< 7 Then

MsgBox "Тыещёдошкольник."

ElseIfВозраст< 17 Then

MsgBox "Ты уже школьник!"

ElseIfВозраст< 23 Then

MsgBox "Вы - студент."

ElseIfВозраст< 55 Then

MsgBox "О, специалист со стажем!"

Else

MsgBox "Пенсионер, Вы заслужили отдых!"

End If

End Sub

Рис. 11.3. Фрагмент кода макроса "СоциальнаяГруппа"

Задание 6.Измените программу так, чтобы вводился не возраст, а год рождения. Возраст же должен каждый раз вычисляться от текущего года.

 

Задание 7. В VBA есть очень удобный оператор Select Case (выбор).Его общий вид (формат) таков:

Select Case <значение>

Case <условие1>

<группа операторов1>

Case < условие2>

< группа операторов2>

. . . . . . . . .

Case < условиеN>

< группа операторовN>

End Select

Принцип его работы прост. Сначала вычисляется значение, затем оно последовательно сравнивается с условиями. Как только значение удовлетворит очередное условие, тут же выполняется соответствующая группа операторов и программ выходит из оператора Select Caseи выполняет уже те операторы, что идут вслед за End Select.

Применим этот оператор к решению задачи о выполнении плана предприятием.

Пусть плановая величина прибыли равна 100 миллионов. Как будет реагировать программа на разные значения прибыли?

Предлагается такой текст программы:

Sub РеакцияНаПрибыль()

Dim Прибыль As Single

Прибыль = InputBox ("Какова общая прибыль предприятия за месяц (млн.руб.)?")

Select Case Прибыль

Case Is = 100

MsgBox "Молодцы, но нельзя ли побольше?"

Case Is < 100

MsgBox "Негоже! В чём дело?"

Case Is > 100

MsgBox "Молодцы, здорово! Будем премировать!"

End Select

End Sub

Рис. 11.4. Фрагмент кода макроса " РеакцияНаПрибыль "

 

Варианты реализации циклических алгоритмов

Задание 8.Написать программу расчета и вывода на экран в виде сообщения последовательности нечётных чисел от 1 до 27.

Решение.Для решения этой задачи более всего подходит цикл с заданным числом повторов (см. рис. 6.8):

For Сч= <начальное значение> to <конечное значение> step <шаг>

Next Сч

Применим его:

SubНечетныеЧисла()

DimНечЧислоAs String 'переменная НечЧисло – строка символов

For k = 1 To 27 Step 2

НечЧисло=НечЧисло& k & " "

Next k

MsgBox "Вот эти нечётные числа:" & _

Chr(10) &НечЧисло

End Sub

В итоге на экран будет выведено сообщение вида:

 
 

 

 


Рис. 11.5. Результат работы программы " НечетныеЧисла "

Задание 9.Составить программу перевода сантиметров в дюймы (1 дюйм = 2, 51 см) как циклическую с дробным шагом для счетчика.

Решение. Для этой задачи тоже подходит цикл For, но только уже с дробным шагом 2,51 для каждого нового значения сантиметра.

SubДюймы_в_см()

DimЗначДюймAs Single

DimДюйм_смAs String

DimдюймAs Integer

дюйм= 0

ForЗначДюйм= 2.51 To 14 Step 2.51

дюйм=дюйм+ 1

Дюйм_см=Дюйм_см&дюйм& " = " &ЗначДюйм& "см" _

& Chr(13)

NextЗначДюйм

MsgBox "Таблицаперевода дюймов в сантиметры:" & _

Chr(13) &ЗначДюйм

End Sub

Рис. 11.6. Текст (код) макроса пересчета сантиметров в дюймы

В итоге на экране – сообщение с таблицей перевода:

 
 

 

 


Рис. 11.7. Результат выполнения макроса (программы) "Дюймы"

Вариант реализации смешанного алгоритма

Задание 10.Ранее описанные алгоритмы (задания 5 - 7) страдают одним общим недостатком: они выполняются всего один раз. Чтобы снова с ними поработать, надо снова и снова запускать программы на выполнение.

Учитывая некоторый опыт, который вы приобрели, решая задачи с разветвляющимися и циклическими алгоритмами, попробуйте из программ заданий 5 – 7 составить программы смешанного типа – циклические с разветвлениями. В качестве примера возьмите фрагмент программы в конце п. 8.5 о закраске ячейки разными цветами, сравнив её с предыдущим вариантом той же программы (стр. 168-170).

Желаем успехов!







Последнее изменение этой страницы: 2016-04-20; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.144.24.41 (0.01 с.)