Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Формирование списка



Для обеспечения эффективности работы со списками необходимо соблюдать следующие правила при их создании:

1. Каждый столбец должен содержать однородную информацию.

2. Одна или две верхние строки в списке должны содержать метки, описывающие назначение соответствующего столбца.

3. Необходимо избегать пустых строк и столбцов внутри списка.

Правило 1 предполагает, что, например, при создании списка персонала можно отвести один столбец для табельных номеров работников, другой – для их фамилий, третий – для их имен, четвёртый – для даты приёма на работу и т. д. Это же правило запрещает размещать в одном столбце разнородную информацию, например номер телефона и год окончания школы.

Правило 2 обеспечивает присвоение имён полям. Эти имена постоянно используются при обработке списков.

Правило 3 обеспечивает возможность работы со списком как с единым целым. В идеале на рабочем листе не должно быть ничего, кроме списка. Если это невозможно, то список нужно отделить от других данных по крайней мере одной пустой строкой и пустым столбцом.

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

Пример оформления лабораторной работы

Задание

Создайте программу, ведущую список сведений об отправлении поездов от станции Ухта. Информация должна содержать: номер поезда, название поезда, кол-во вагонов, название (скорый или пассажирский), дату отправления, время стоянки, по каким числам. В программе должны быть реализованы функции поиска и редактирования данных в таблице. Для ввода и вывода информации должны быть использованы стандартные элементы интерфейса Windows (кнопки, поля, списки, счётчики, переключатели и т. д.). Данные хранятся в таблице Excel.

1. Постановка задачи

Составить программу «Расписание движения поездов по станции Ухта», предоставляющую информацию о поездах. Данные о поездах (номер, станция отправления, станция назначения, время отправления, время прибытия, всего в пути) должны храниться в таблице Excel. В программе реализовать функции поиска, выбора информации по указанному признаку и редактирования данных таблицы. Для ввода и вывода информации использовать стандартные элементы интерфейса Windows 95/98/NT.

2. Исходные данные

Исходными данными для программы являются сведения о поездах, занесенные в Excel (см. рис.) и содержащие информацию:

§ номер поезда;

§ станция отправления;

§ станция назначения;

§ время отправления;

§ время прибытия;

§ всего в пути.

На рисунке 30 представлена таблица исходных данных.

Рисунок 30 – Исходная таблица в Excel

3. Перечень функций разработанной программы

Функция добавления поезда в исходную таблицу.

Функция корректировки данных.

Функция поиска по номеру поезда.

Функция поиска по станции назначения.

4. Описание

При нажатии кнопки «Редактировать» загружается следующая форма (рис. 31):


Рисунок 31 – Форма «Редактирование»

Редактирование данных

Чтобы выполнить редактирование данных, нужно нажать кнопку Изменить. На лист Excel выводится форма UserForm1 с заголовком Редактирование. Перед показом формы происходит занесение данных с листа Excel в форму UserForm1.

Событийная процедура кнопки Редактировать

Private Sub CommandButton1_Click()

'Процедура обработки при нажатии кнопки "Редактирование"

Load UserForm1 'Загрузить форму UserForm1

i = ActiveCell.Row

UserForm1.TextBox1.Text = Worksheets(1).Rows(i).Cells(1).Value

UserForm1.TextBox2.Text = Worksheets(1).Rows(i).Cells(2).Value

UserForm1.TextBox3.Text = Worksheets(1).Rows(i).Cells(3).Value

UserForm1.TextBox4.Text = Worksheets(1).Rows(i).Cells(4).Value

UserForm1.TextBox5.Text = Worksheets(1).Rows(i).Cells(5).Value

UserForm1.TextBox6.Text = Worksheets(1).Rows(i).Cells(6).Value

UserForm1.Show 'Показать форму UserForm1

End Sub.

На диалоговой форме UserForm1 разместить надписи: код, наименование, кол-во, цена; поля TextBox1, TextBox2, TextBox3, TextBox4; TextBox5, TextBox6, счётчик SpinButton1; кнопку CommandButton1 с заголовком Записать и кнопку CommandButton2 с заголовком Добавить.

Используя компонент Счётчик, найти нужную запись, выполнить редактирование данных и нажать кнопку Записать. Все изменения отразятся в таблице.

Событийная процедура кнопки Записать

Private Sub CommandButton1_Click()

Dim m As Integer

m = ActiveCell.Row

'Данные из полей записываются в таблицу

Worksheets(1).Cells(m, 1).Value = TextBox1.Text

Worksheets(1).Cells(m, 2).Value = TextBox2.Text

Worksheets(1).Cells(m, 3).Value = TextBox3.Text

Worksheets(1).Cells(m, 4).Value = TextBox4.Text

Worksheets(1).Cells(m, 5).Value = TextBox5.Text

Worksheets(1).Cells(m, 6).Value = TextBox6.Text

'Подсчёт числа кондитерских изделий

k = UserForm1.EndFind – 3

'Вывод вычисленного значения на экран

Worksheets(1).TextBox1.Text = Str(k) & " Обьектов"

End Sub.

Если необходимо ввести новые данные в таблицу, нужно нажать кнопку Добавить. На лист Excel выводится форма UserForm1 с пустыми полями. Ввести данные и нажать кнопку Записать.

Событийная процедура кнопки Добавить

Private Sub CommandButton2_Click()

'Поиск первой свободной строки в таблице

Worksheets(1).Rows(UserForm1.EndFind).Select

UserForm1.TextBox1.Text = ""

UserForm1.TextBox2.Text = ""

UserForm1.TextBox3.Text = ""

UserForm1.TextBox4.Text = ""

UserForm1.TextBox5.Text = ""

UserForm1.TextBox6.Text = ""

End Sub.


Процедуры для компонента Счётчик

Перемещение на строку вниз

Private Sub SpinButton1_SpinDown()

i = ActiveCell.Row + 1

If Worksheets(1).Rows(i).Cells(1).Value <> "" Then

Worksheets(1).Rows(ActiveCell.Row + 1).Select

UserForm1.TextBox1.Text = Worksheets(1).Rows(i).Cells(1).Value

UserForm1.TextBox2.Text = Worksheets(1).Rows(i).Cells(2).Value

UserForm1.TextBox3.Text = Worksheets(1).Rows(i).Cells(3).Value

UserForm1.TextBox4.Text = Worksheets(1).Rows(i).Cells(4).Value

UserForm1.TextBox5.Text = Worksheets(1).Rows(i).Cells(5).Value

UserForm1.TextBox6.Text = Worksheets(1).Rows(i).Cells(6).Value

End If

End Sub.

Перемещение на строку вверх

'Перемещение на строку вверх.

Private Sub SpinButton1_SpinUp()

i = ActiveCell.Row – 1

If i > 2 Then

Worksheets(1).Rows(ActiveCell.Row – 1).Select

UserForm1.TextBox1.Text = Worksheets(1).Rows(i).Cells(1).Value

UserForm1.TextBox2.Text = Worksheets(1).Rows(i).Cells(2).Value

UserForm1.TextBox3.Text = Worksheets(1).Rows(i).Cells(3).Value

UserForm1.TextBox4.Text = Worksheets(1).Rows(i).Cells(4).Value

UserForm1.TextBox5.Text = Worksheets(1).Rows(i).Cells(5).Value

UserForm1.TextBox6.Text = Worksheets(1).Rows(i).Cells(6).Value

End If

End Sub.

Функция поиска первой свободной строки в таблице

Public Function EndFind()

Dim i As Byte

i = 2

While Worksheets(1).Rows(i).Cells(2).Formula > ""

I = i + 1

Wend

EndFind = i

End Function.

Поиск информации

Чтобы осуществить поиск № поезда по заданному № поезда или станции назначения, нужно нажать кнопку Поиск. На экран выводится форма UserForm2 с заголовком Поиск.

Событийная процедура кнопки Поиск

Private Sub CommandButton2_Click()

Load UserForm2 ‘Загрузить форму UserForm2

UserForm2.Show ‘Показать форму UserForm2

End Sub.

Форма UserForm2

На рисунке 32 представлена форма поиска информации по № поезда.

Рисунок 32 – Поиск по признаку номера поезда

На диалоговой форме UserForm2 разместить: страницы Page1, Page2. На странице Page1 надпись Label1 с заголовком Введите № поезда, поле TextBox1, кнопку CommandButton1 с заголовком Найти. На странице Page2 надпись Label2 с заголовком Введите станцию назначения, поле TextBox2, кнопку CommandButton2 с заголовком Найти.

Выбрать страницу № поезда (Станция назначения), ввести код (Станция назначения) и нажать кнопку Найти. Если номер поезда с таким № поезда найден, то соответствующая строка выделяется. В противном случае выводится сообщение “ Не найдено ”.


Поиск информации по № поезда

Событийная процедура кнопки Найти

Private Sub CommandButton1_Click()

Dim j As Integer

Dim finder As String

On Error GoTo label

i = 2

finder = UserForm2.TextBox1.Text

'Поиск строки с заданным номером поезда

While finder <> Worksheets(1).Rows(i).Cells(1).Formula

i = i + 1

Wend

'Выделение строки

Worksheets(1).Rows(i).Select

UserForm2.Hide 'Скрыть форму UserForm2

Exit Sub

label:

MsgBox "Не найдено"

End Sub.

На рисунке 33представлена форма поиска информации по станции назначения.

Рисунок 30 – Поиск информации по станции назначения

Private Sub CommandButton2_Click()

Dim j As Integer

Dim finder As String

On Error GoTo label

i = 2

finder = UCase(UserForm2.TextBox2.Text)

'Поиск строки с заданной станцией назначения

While finder <> UCase(Worksheets(1).Rows(i).Cells(3).Formula)

i = i + 1

Wend.

'Выделение строки

Worksheets(1).Rows(i).Select

UserForm2.Hide

Exit Sub

label:

MsgBox "Не найдено"

End Sub.





Дата публикования: 2014-11-02; Прочитано: 387 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.014 с)...