Добавление и удаление данных (с применением вкладок)
UserForm имеет следующий вид (при создании используется элемент управления Page – что позволяет создать две вкладки «Удалить» и «Добавить»): Вкладка добавить имеет вид ранее рассмотренной формы «Добавление данных» и создается аналогично ей. При удалении данных будет автоматически выходить название товара. Удаление будет производится сразу в двух таблицах: на листе «Ассортимент» и на листе «Регистрация заказов». Программный код для кнопки «Удалить»: Dim pr As Object, X As Object Dim name As String Dim h As Byte Dim Y As Byte h = MsgBox("Вы действительно хотите удалить этот товар?", vbYesNo + vbQuestion, "Удаление") If h = vbYes Then Else GoTo e name = ComboBox1 If ComboBox1 = "" Then Y = MsgBox("Удаление невозможно, т.к. не выделен объект", vbYes + vbQuestion, "Удаление") If Y = vbYes Then GoTo 12 Else GoTo e End If ActiveWorkbook.Sheets("Регистрация заказов").Activate Set pr = ActiveSheet.Range("b6") Do While Not IsEmpty(pr) Set X = pr.Offset(1, 0) If pr = name Then pr.Select Selection.EntireRow.Delete End If Set pr = X Loop ActiveWorkbook.Sheets("Ассортимент").Activate Set pr = ActiveSheet.Range("a2") Do While Not IsEmpty(pr) Set X = pr.Offset(1, 0) If pr = name Then pr.Select Selection.EntireRow.Delete End If Set pr = X Loop 12 ComboBox1 = "" TextBox4 = "" UserForm7.Hide Программный код для активации формы:
Dim pr As Object, X As Object UserForm7.ComboBox1.Clear ActiveWorkbook.Sheets("Ассортимент").Select Set pr = ActiveSheet.Range("a2") Do While Not IsEmpty(pr) Set X = pr.Offset(1, 0) ComboBox1.AddItem pr Set pr = X Loop
Поиск и изменение данных в таблицах Созданы две пользовательских формы: одна для поиска данных, и одна для изменения данных. Поиск состоит из следующих процедур: из раскрывающегося списка выбирается дата реализации продукта, затем в список ListBox заносят все продукты, которые были реализованы в указанную дату. После чего необходимо выбрать в ListBox конкретный продукт, затем заполняется два текстовых поля соответствующими данными (название и количество). Одновременно название продукта попадает в невидимую надпись Label – с помощью нее связаны две формы. При нажатии кнопки «Изменить» активизируется вторая форма, и можно изменить количество реализованного продукта. При этом измененные данные попадают в таблицу на листе «Регистрация заказов» и происходит перерасчет суммы. Вид формы «Поиск данных»: В форме использованы следующие элементы: ComboBox (раскрывающийся список для выбора даты), ListBox – список в который попадают все продукты, реализованные в указанную дату. Два текстовых поля TextBox, две кнопки и пять надписей Label. Программы для этой формы следующие: Private Sub ComboBox1_Change() Dim sss, ads ListBox1.Clear TextBox1.Text = "" TextBox2.Text = "" 1 For sss = 1 To 500 If ComboBox1.Text = Sheets("Регистрация заказов").Cells(sss, 5).Text Then ListBox1.AddItem Sheets("Регистрация заказов").Cells(sss, 3).Text Next End Sub Процедура для кнопки «Изменить»:
If ListBox1.Text = "" Then MsgBox "Выберите дату реализации продукта": Exit Sub UserForm9.TextBox1.Text = UserForm8.ListBox1.Text UserForm9.TextBox2.Text = UserForm8.TextBox2.Text Dim ddd UserForm8.Hide UserForm9.Show
Private Sub CommandButton2_Click() UserForm8.Hide End Sub Private Sub ListBox1_Click() For i = 1 To 8000 If ListBox1.Text = Sheets("Регистрация заказов").Cells(i, 3).Text And ComboBox1.Text = Sheets("Регистрация заказов").Cells(i, 5).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("A5:C8000").Select Selection.Sort Key1:=Range("A6"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 1 For ads = 6 To 8000 If Sheets("Регистрация заказов").Cells(ads, 5).Text = "" Then Exit Sub If Sheets("Регистрация заказов").Cells(ads, 5).Text = Sheets("Регистрация заказов").Cells(ads + 1, 1).Text Then GoTo 3 ComboBox1.AddItem Sheets("Регистрация заказов").Cells(ads, 5).Text 3 Next End Sub Форма для изменения данных имеет вид: в этой форме использованы два текстовых поля, две кнопки и надпись. Программный код следующий: Private Sub CommandButton1_Click() ddd = UserForm8.Label5.Caption Worksheets("Регистрация заказов").Cells(ddd, 4) = TextBox2.Text UserForm9.Hide End Sub Private Sub CommandButton2_Click() Sheets("Регистрация заказов").Select Range("A5:C800").Select Selection.Sort Key1:=Range("A5"), Order1:=xlDescending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Unload UserForm9 Unload UserForm8 Load UserForm8 UserForm8.Show End Sub
|