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

Задание 6. Поиск и изменение данных в таблицах.

Работа заключается в следующем. Создаются две пользовательских формы: одна для поиска данных (UserForm5) и одна для изменения данных (UserForm6). Поиск состоит из следующих процедур: из раскрывающегося списка выбирается дата реализации продукта, затем в список ListBox заносятся все продукты, которые были реализованы в ресторане в указанную дату. После чего, необходимо выбрать в ListBox конкретный продукт, затем заполняются два текстовых поля (TextBox) соответствующими данными (название и количество). Одновременно название продукта попадает в невидимую надпись Label5 – с помощью нее связаны две формы. При нажатии кнопки «Изменить» активизируется UserForm6, и можно изменить количество реализованного продукта. При этом измененные данные попадают в таблицу на листе «Реализация» и происходит перерасчет суммы.

Итак, UserForm5:

В форме использованы следующие элементы: ComboBox1 (раскрывающийся список для выбора даты). ListBox1 – список, в который попадают все продукты, реализованные в указанную дату. Два текстовых поля TextBox, две кнопки и пять надписей Label, чтобы надпись сделать невидимой на экране необходимо установить значение ее свойства Visible – False.

Программы для этой формы следующие:

Сначала вводятся переменные для обозначения строк:

Dim sss, ads

Private Sub ComboBox1_Change()

' эта процедура очищает ранее заполненные поля формы, и после выбора из списка ‘конкретную дату заполняет соответствующими названиями продуктов ListBox1

ListBox1.Clear

TextBox1.Text = " "

TextBox2.Text = " "

1 For sss = 1 To 5000

If ComboBox1.Text = Sheets("Реализация").Cells(sss, 1).Text Then

ListBox1.AddItem Sheets("Реализация").Cells(sss, 3).Text

End If

Next

End Sub

Private Sub CommandButton1_Click()

'эта процедура для кнопки "Изменить". После выбора конкретного продукта заполняются 'его данные в текстовых полях в форме "Изменение данных"

If ListBox1.Text = " " Then MsgBox "Выберите дату реализации продукта": Exit Sub

UserForm6.TextBox1.Text = UserForm5.ListBox1.Text

UserForm6.TextBox2.Text = UserForm5.TextBox2.Text

Dim ddd

UserForm5.Hide

UserForm6.Show

End Sub

Private Sub CommandButton2_Click()

UserForm5.Hide

End Sub

Private Sub ListBox1_Click()

'после выбора конкретной даты в ListBox1 заполняются остальные данные -

' название продукта и количество. Затем в невидимую надпись Label5 вносится название 'выбранного продукта

For i = 1 To 8000

If ListBox1.Text = Sheets("Реализация").Cells(i, 3).Text Then

TextBox1.Text = Sheets("Реализация").Cells(i, 3).Text

TextBox2.Text = Sheets("Реализация").Cells(i, 4).Text

Label5.Caption = i

End If

Next

End Sub

Private Sub UserForm_Activate()

' при активизации формы "Поиск" сначала данные сортируются по убыванию даты

' реализации продуктов, затем заполняется список с датами из первого столбца таблицы.

Sheets("Реализация").Select

Range("A2:C8000").Select

Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlNo, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

1 For ads = 2 To 8000

If Sheets("Реализация").Cells(ads, 1).Text = "" Then Exit Sub

If Sheets("Реализация").Cells(ads, 1).Text = Sheets("Реализация").Cells(ads + 1, 1).Text Then GoTo 3

ComboBox1.AddItem Sheets("Реализация").Cells(ads, 1).Text

3 Next

End Sub

Форма для изменения данных имеет вид:

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

Private Sub CommandButton1_Click()

' переменной ddd присваивается название продукта из невидимой надписи Label5

' затем количество реализованного продукта из этой строки (ddd),

' заносится в TextBox2

ddd = UserForm5.Label5.Caption

Worksheets("Реализация").Cells(ddd, 4) = TextBox2.Text

End Sub

Private Sub CommandButton2_Click()

Sheets("Реализация").Select

Range("A2:C800").Select

Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlNo, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

Unload UserForm6

Unload UserForm5

Load UserForm5

UserForm5.Show

End Sub