- •1. Теоретические основы
- •Структура редактора vba
- •Интеллектуальные возможности vba
- •Встроенные диалоговые окна
- •2. Основы программирования на vba Допустимые имена
- •Переменные
- •Оператор присвоения
- •Оператор With
- •Операторы управления
- •Оператор условного перехода
- •Оператор выбора
- •Оператор For – Next
- •Оператор For Each
- •Оператор While – Wend
- •Оператор Do – Loop
- •Методы формы
- •События формы
- •Элементы управления
- •Общие свойства элементов управления
- •Общие методы элементов управления
- •Общие события элементов управления
- •Кнопка (CommandButton)
- •Поле (TextBox)
- •Надпись (Label)
- •Переключатель (OptionButton)
- •Список (ListBox)
- •Поле со списком (ComboBox)
- •Отображение встроенных диалоговых окон
- •4. Задания для самостоятельной работы Задание 1. Работа со встроенными диалоговыми окнами
- •Задание 2. Использование элементов управления набора вкладок и набора страниц
- •Задание 3. Добавление данных в таблицу Excel
- •Задание 4 Добавление данных на лист «Реализация товаров» Задание 5. Добавление и удаление данных (с применением вкладок)
- •Задание 6. Поиск и изменение данных в таблицах.
- •Задание 7. Сортировка данных Задание 8. Создание ведомости (отчета)
- •Задание 9. Оформление курсовой работы.
- •Требования к курсовой работе
- •Задания на курсовую работу
Задание 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