With Selection.Borders(xlEdgeLeft) 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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; просмотров: 2365; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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