
Работа заключается в следующем. Создается пользовательская форма поиска и изменения данных, в моем примере это UserForm5 . Поиск состоит из следующих процедур: из раскрывающегося списка выбирается дата реализации продукта, затем в список ListBox заносятся все продукты, которые были реализованы в ресторане в указанную дату. После чего, необходимо выбрать в ListBox конкретный продукт, затем заполняются два текстовых поля
(TextBox) соответствующими данными (название и количество). Изменять можно только количество проданного товара. Для этого в TextBox необходимо внести новое количество товара и нажать кнопку «Изменить» При этом измененные данные попадают в таблицу на листе «Реализация» и происходит перерасчет суммы.
В форме использованы следующие элементы: ComboBox1 (раскрывающийся список для выбора даты). ListBox1 – список, в который попадают все продукты, реализованные в указанную дату. Два текстовых поля TextBox, две кнопки и четыре надписи Label.
Программы для этой формы следующие:
Сначала вводятся переменные для обозначения строк:
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()
'эта процедура для кнопки "Изменить". После выбора конкретного продукта значение из текстового поля «количество» попадает в соответствующую ячейку рабочего листа «реализация»
For sss = 1 To 8000
If ComboBox1.Text = Sheets("Реализация").Cells(sss,1).Text And ListBox1.Text = Sheets("Реализация").Cells(sss, 3).Text Then
Worksheets("Реализация").Cells(sss, 4) = TextBox2.Text
End If
Next
ListBox1.Clear
TextBox1.Text = " "
TextBox2.Text = " "
End Sub
Private Sub CommandButton2_Click()
UserForm5.Hide
End Sub
Private Sub ListBox1_Click()
'после выбора конкретной даты в ListBox1 заполняются остальные данные -
' название продукта и количество.
For sss = 1 To 8000
If ComboBox1.Text = Sheets("Реализация").Cells(sss, 1).Text And ListBox1.Text = Sheets("Реализация").Cells(sss, 3).Text Then
TextBox1.Text = Sheets("Реализация").Cells(sss, 3).Text
TextBox2.Text = Sheets("Реализация").Cells(sss, 4).Text
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 Workbook_open()
Sheets("Титульный").Select
Application.CommandBars("Control Toolbox").Visible = False
Application.CommandBars("Picture").Visible = False
Application.CommandBars("PivotTable").Visible = False
Application.CommandBars("External Data").Visible = False
Application.CommandBars("Forms").Visible = False
Application.CommandBars("Chart").Visible = False
Application.CommandBars("Reviewing").Visible = False
Application.CommandBars("WordArt").Visible = False
Application.CommandBars("Web").Visible = False
Application.CommandBars("Visual Basic").Visible = False
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Drawing").Visible = False
Application.DisplayFormulaBar = False
Application.DisplayStatusBar = False
End Sub
Что бы при открытии работы открывался сразу нужный лист необходимо сделать следующее:
Сделайте двойной щелчок на элементе «Эта книга» в редакторе Visual Basic (Alt+F11). . Наберите следующую программу:
Private Sub Workbook_Open()
Sheets("Главное меню"). Activate
' ну и код приветствия
MsgBox "Вас приветствует информационно- аналитическая система...."
End Sub