Организация документооборота с помощью "Visual Basic for Application"

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

количество студентов..

Рассмотрим программный код, реализующий построение данного отчета, и в качестве первого шага прокомментируем элементы управления.

В левом верхнем углу находится поле со списком (Name = L1). Этот элемент при открытии книги автоматически заполняется информацией об учебных неделях (процедура workBook_open). Справа от поля со списком располагается кнопка Заполнить (Name = coml), позволяющая заполнить лист информацией. В результате щелчка по этой кнопке ячейки листа заполняются информацией (количество занимающихся студентов и заявитель).

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

Теперь прокомментируем некоторые программные конструкции, выполняемые по щелчку на кнопке Заполнить. Полный текст процедуры обработки щелчка по этой кнопке приведен в приложении 1. В начале процедуры в массиве colors устанавливаются цвета для заливки ячеек с заявками различных факультетов, что обеспечивает наглядность представления информации.

После установки заливки ячеек (определенный цвет связан с конкретным заявителем) сначала выполняется очистка области для вывода:

Range("a5:ZZ200").Select Selection.ClearContents

Также устанавливается белый цвет заливки для области, где будет присутствовать информация о занятиях:

Range("b7:ZZ200").Select

With Selection.Interior

.ColorIndex = 0

.Pattern = xlSolid

End With

После этого подсчитывается количество заявителей на втором листе:

N_Boss = О

While Worksheets(2).Cells(N_Boss + 2, 6).Value <> ""

N_Boss = N_Boss + 1

Wend

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

For i = 1 То N_Boss

Cells(2, 2 + i * 2).Select With Selection.Interior

.ColorIndex = colors (i)

.Pattern = xlSolid

End With

Cells (1, 2 + i * 2).Value = Worksheets(2).Cells(i + 1, 6).Value

Next

Следующий фрагмент позволяет установить в пятой и шестой строках подписи время начала занятий:

St = 1

For I = 1 To N_Day

For j = 1 To N_Times

St = St + 1

Cells (5, st).Value = Worksheets (2).Cells (i = 1, 4).Value

Cells (6, st).Value = Worksheets (2).Cells (i = 1, 5).Value

Next

Next

 

На этом подготовительная часть для формирования отчета завершена, и далее заполнения отчета в цикле просматриваются все заявки. Если заявка обслужена (для нее подобрана аудитория) и на указанной неделе занятие по заявке проводится, то далее она анализируется. В противном случае иного отчета она не рассматривается.

В следующем фрагменте производится вычисление номера строки, где она а быть отражена:

Stroke = 0

For I = 1 To nom

If N_Ayd = CStr(Cells(i + 6, 1).Value) Then

Stroke = i + 6

Exit For

End if

Next

Аналогично вычисляется значение столбца на листе АФ, где необходимо отобразить отданную заявку:

For m = 1 To DaysTimes

If CStr (Workssheets(1).Cells(i, 4).Value)_

= CStr (Cells(5, 1 + m). Value) Then

If CStr (Workssheets(1).Cells(i, 5).Value)_

= CStr (Cells(6, 1 + m). Value) Then

Stolbec = 1 + m

Exit For

End If

End If

Next

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

Следующее действие закраска ячейки цветом того факультета, к которому данная заявка относится:

Name_Boss = CStr(Worksheets(1).Cells(i, 2).Value)

For nomer = 1 To N_Boss

If Name_Boss = CStr(Worksheets(2).Cells(nomer + 1, 6).Value) Then

Exit For

End If

Next

Cells(stroka, stolbec).Select With Selection.Interior

.ColorIndex = colors(nomer)

.Pattern = xlSolid End With

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

Cells(stroka, stolbec).Value = Cells(stroka, stolbec).Value +

Worksheets(1).Cells(i, 6).Value

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

 

Листинг 21. Предопределенная процедура selectionСhaтge

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

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

Stroka = ActiveCell.Row

Stolbec = ActiveCell.Column

If Stolbec <> 1 Then

Информационное окно видимо только при выделении первого столбца

Infl.Visible = False

Elself Stroka > 6 Then

Infl.Visible = True

Infl.Text = "Вместимость " + _

Str(Worksheets(2).Cells(Stroka - 5, 2)) + "чел"

End If

End Sub

 

Отчет по ресурсам фонда аудиторий

Важным представляется ответ на вопрос: каков свободный ресурс аудиторий в определенном интервале учебных недель? Ответ на него можно получить на девятом листе книги Microsoft Excel, который называется Отчет 3. По горизонтали на этом листе в пятой и шестой строках выводятся дни и время начала занятий (фактически в этих строках перечислены все занятия в течение недели), а в первом столбце указаны все аудитории, которыми располагает учебное заведение. В этом плане начало составления отчета ничем не отличается от предыдущего.

Однако теперь в сводной таблице выводится количество занятий в аудиториях в указанном интервале недель. При этом разная загруженность (различное количество занятий в выбранном интервале) дополнительно выделяется разными цветами. На листе реализованы градации цвета в зависимости от загруженности:

  1. максимальная загруженность;
  2. загруженность выше средней;
  3. загруженность ниже средней;
  4. в выбранном интервале недель нет занятий.

В этом случае пользователю часто достаточно взглянуть на отчет, чтобы определить, есть ли аудитории, скажем для органи