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

Окончание таблицы 8

Задание

п/п

 

Доход от сдачи в аренду одной из четырех квартир за 2006 г. составил 120 тыс. р., доход от сдачи в аренду второй квартиры за этот же год на 2 % превысил доход от сдачи в аренду первой, третьей – на 4 % больше, чем доход от сдачи в аренду второй, а четвер-

14той – на 8 % больше, чем доход от сдачи в аренду третьей квартиры. Известно, что доход от сдачи в аренду каждой из четырех квартир за 2007 г. вырос по сравнению с предыдущим годом на 15 %, а за 2008 – на 30 % по сравнению с 2007 г. Определить доход предприятия в целом, полученный за каждый из трех годов, начиная с 2006 г., и суммарный доход предприятия за три года.

Определить, какое количество специалистов каждой категории может принять на работу предприятие, если ежемесячная зарплата специалиста первой категории составляет 15

15тыс. р., ведущего специалиста – 20 тыс. р., а главного специалиста – 25 тыс. р. и если количество штатных единиц должно быть равно 35 при ежемесячных расходах на зарплату 625 тыс. р.

ЛАБОРАТОРНАЯ РАБОТА 6

ОДНОМЕРНЫЕ МАССИВЫ

Основные сведения

Массив – это упорядоченная совокупность определенного количества однотипных переменных с общим именем и разными индексами. Каждая такая переменная – элемент массива. Количество элементов в массиве – размер массива.

Одномерный массив представляет собой упорядоченный набор пронумерованных элементов одного типа, которые расположены в одной строке или столбце. Элемент массива обозначается путем указания имени массива и индекса, заключенного в круглые скобки, например, Х(7).

Для объявления массива используется оператор Dim:

Dim Имя_Массива (Размерность_Массива) As Тип_Элементов

В этом случае нумерация элементов массива начинается с нуля. Для нумерации элементов массива, например, с единицы используется запись

Dim Имя_Массива (1 To Размерность_Массива) As Тип_Элементов Для изменения границ массива используется оператор ReDim:

ReDim Имя_Массива (Размерность_Массива)

Пример

Известны данные о численности населения (в миллионах жителей) 12 государств: Страна. Численность населения. Необходимо разработать пользовательскую форму и составить программу в редакторе VB MS Excel, с помощью которой будет осуществляться:

1)ввод исходных данных и их вывод в виде таблицы на рабочий лист;

17

2)определение государства, в котором проживает больше всего жителей, а также количество и название стран, в которых численность населения составляет от 10 до 50 миллионов жителей;

3)вставка записи о численности населения еще одного государства, которая должна быть расположена после записи, соответствующей государству с наибольшим числом населения;

4)сортировка полученных данных по полю Страна в алфавитном порядке. Пусть пользовательская форма будет иметь вид, представленный на рис. 12.

Рис. 12. Таблица и форма «Численность населения европейских государств»

Свойства объектов формы представлены в таблице 9.

 

 

 

 

 

Таблица 9

 

 

 

 

Объект

 

 

Объект

Свойство

 

Свойство

CommandButton1

Name = inputOutputData

 

 

CommandButton4

Name = calc

 

Caption = Ввод и вывод данных

 

 

Caption = Рассчитать

 

CommandButton2

Name = add

 

 

CommandButton5

Name = clean

 

Caption = Добавить запись

 

 

Caption = Очистить

 

CommandButton3

Name = sort

 

 

CommandButton6

Name = exitForm

 

Caption = Отсортировать

 

 

Caption = Выход

 

UserForm1

Caption = Численность населения европейских государств

 

Значения массива, соответствующего названиям стран, будут считываться с рабочего листа MS Excel. Для этого необходимо данные названия предварительно ввести в ячейки первого листа (рис. 12). А значения массива, отвечающего за численность населения, будем вводить с помощью функции InputBox.

Для обработки события нажатия кнопки «Ввод и вывод данных» введем следующий код:

18

Dim NazvGos(1 To 13)

As

String

‘объявление типа переменных

Dim

KolNasel(1 To 13) As Single

 

Dim

SizeM, NomerMax,

i,

k As Integer

 

Private Sub InputOutputData_Click() SizeM = 12

For i = 1 To SizeM ‘ввод элементов массивов

NazvGos(i) = Worksheets("Лист1").Range("A" & i + 1).Value KolNasel(i) = Val(InputBox("Введите численность населения страны " &

NazvGos(i) & " в млн. чел.", "Ввод данных"))

Cells(i + 1, 2)

=

KolNasel(i)

‘вывод элементов

массива

Next i

To SizeM

+ 1

‘задание формата

ячеек таблицы

For

i

= 1

If

i

= 1

Then

 

 

 

 

‘начертание

шрифта

 

 

 

 

Worksheets("Лист1").Range("A" & i).Font.FontStyle = "полужирный" ‘горизонтальное выравнивание

Worksheets("Лист1").Range("A" & i).HorizontalAlignment = xlCenter Worksheets("Лист1").Range("B" & i).Font.FontStyle = " полужирный" Worksheets("Лист1").Range("B" & i).HorizontalAlignment = xlCenter

End If

‘задание стиля границ ячеек

Worksheets("Лист1").Range("A" & i).Borders.LineStyle = xlContinuous Worksheets("Лист1").Range("B" & i).Borders.LineStyle = xlContinuous

‘числовой формат ячейки

If i>1 Then Worksheets("Лист1").Range("B" & i).NumberFormat = "0.000" Next i

End Sub

При нажатии на кнопку «Рассчитать» на первый лист ниже таблицы будет выводиться название государства, в котором проживает больше всего жителей, а также количество и название стран, в которых численность населения составляет от 10 до 50 млн. жителей. Код для обработки события нажатия кнопки «Рассчитать» имеет вид:

Private Sub calc_Click() Dim maxKN As Single

maxKN = KolNasel(1) k = 0

Cells(SizeM + 3, 1)

= "Наиболее населенная

страна"

Cells(SizeM

+

4,

1)

=

Число стран

с населением 10-50 млн.чел."

Cells(SizeM

+

5,

1)

=

"

а

именно:"

 

For i = 1 To SizeM

‘поиск максимального элемента и его номера по массиву «Численность населения»

If KolNasel(i) > maxKN Then maxKN = KolNasel(i): NomerMax = i

If (KolNasel(i)

> 10) And (KolNasel(i) < 50) Then

k

= k + 1

4 + k, 2) = NazvGos(i)

‘определение количества и

Cells(SizeM +

‘названий стран с населением

End

If

 

 

‘от 10 до 50 млн.чел.

Next

i

2)

= NazvGos(NomerMax)

 

Cells(SizeM + 3,

 

Cells(SizeM + 4,

2)

= Str(k)

 

End Sub

19

При нажатии на кнопку «Добавить запись» на втором листе будет выводиться таблица, содержащая информацию о численности населения 13 стран, т. е. после записи, соответствующей государству с наибольшим числом населения, еще будет вставлена следующая запись «Болгария 10,392». Для обработки события нажатия кнопки «Добавить запись» введем следующий код:

Private Sub add_Click()

For i = SizeM + 1 To NomerMax + 2 Step -1 ‘раздвигаем элементы массива

NazvGos(i) = NazvGos(i - 1)

 

KolNasel(i) = KolNasel(i - 1)

 

Next i

‘вставляем элемент

NazvGos(NomerMax + 1) = "Болгария"

KolNasel(NomerMax + 1) = 10.392

‘переход на «Лист2»

Worksheets("Лист2").Select

Cells(1, 1) = "Страна"

 

Cells(1, 2) = "Численность населения (млн.чел.)"

For i = 1 To SizeM + 1

‘вывод массивов на новый лист

Cells(i + 1, 1) = NazvGos(i)

Cells(i + 1, 2) = KolNasel(i)

 

Next i

‘задание формата ячеек таблицы

For i = 1 To SizeM + 2

If i = 1 Then

& i).Font.FontStyle = "полужирный"

Worksheets("Лист2").Range("A"

Worksheets("Лист2").Range("A"

& i).HorizontalAlignment = xlCenter

Worksheets("Лист2").Range("B"

& i).Font.FontStyle = "полужирный"

Worksheets("Лист2").Range("B"

& i).HorizontalAlignment = xlCenter

End If

i).Borders.LineStyle = xlContinuous

Worksheets("Лист2").Range("A" &

Worksheets("Лист2").Range("B" &

i).Borders.LineStyle = xlContinuous

If i>1 Then Worksheets("Лист2").Range("B" & i).NumberFormat = "0.000" Next i

End Sub

При нажатии на кнопку «Отсортировать» будет выполняться сортировка массивов по названиям стран в алфавитном порядке, а результат сортировки будет выведен на третий лист. Код для обработки события нажатия кнопки «Отсортировать» имеет вид:

Private Sub sort_Click()

‘объявление типа переменных

Dim j As Integer

Dim

TempG

As

String

 

Dim

TempN

As

Single

 

Worksheets("Лист3").Select

 

Cells(1, 1)

= " Страна "

 

Cells(1, 2)

= "Численность населения (млн.чел.) "

For i =

1 To SizeM

SizeM + 1

‘сортировка массива по возрастанию

For j

= i + 1 To

 

If

NazvGos(i)

> NazvGos(j) Then

 

TempG = NazvGos(i):

TempN = KolNasel(i)

 

NazvGos(i)

= NazvGos(j):

KolNasel(i) = KolNasel(j)

 

NazvGos(j)

= TempG:

KolNasel(j) = TempN

End If

 

 

 

Next j

 

 

 

20

 

 

 

 

Next i

 

For i = 1 To SizeM + 1

‘вывод массивов на новый лист

Cells(i + 1, 1) = NazvGos(i)

Cells(i + 1, 2) = KolNasel(i)

 

Next i

‘задание формата ячеек таблицы

For i = 1 To SizeM + 2

If i = 1 Then

& i).Font.FontStyle = "полужирный"

Worksheets("Лист3").Range("A"

Worksheets("Лист3").Range("A"

& i).HorizontalAlignment = xlCenter

Worksheets("Лист3").Range("B"

& i).Font.FontStyle = "полужирный"

Worksheets("Лист3").Range("B"

& i).HorizontalAlignment = xlCenter

End If

i).Borders.LineStyle = xlContinuous

Worksheets("Лист3").Range("A" &

Worksheets("Лист3").Range("B" &

i).Borders.LineStyle = xlContinuous

If i>1 Then Worksheets("Лист3").Range("B" & i).NumberFormat = "0.000" Next i

End Sub

На первом рабочем листе разместим кнопку «Форма» для вызова формы «Численность населения европейских государств». Запустим данную форму и проверим работу составленной программы (рис. 13 и 14).

Рис. 13. Результат нажатия кнопок «Ввод и вывод данных» и «Рассчитать»

Теперь введем код обработки событий нажатия кнопок «Очистить» и «Выход»:

Private

Sub

clean_Click()

‘удаляем содержимое ячеек

For i

= 1

To 30

Worksheets("Лист1").Range("A" & i + 14). ClearContents Worksheets("Лист1").Range("B" & i + 1). ClearContents Worksheets("Лист2").Range("A" & i). ClearContents Worksheets("Лист2").Range("B" & i). ClearContents

21