Код кнопки добавить и последующий форме
Этот код выводит одноименную форму содержащую TextBox для добавления в таблицу записи. Подобная система вывода форма выбрана мной для того чтобы основные окна формы не были переполнены различными элементами. ‘выводится форма добавления Private Sub CommandButton1_Click() Unload UserForm3 UserForm4.Show End Sub
Данная форма имеет 2 TextBox и 2 CommandButton.
Код кнопки «Добавить»: Private Sub CommandButton1_Click() Sheets("Сотрудники").Activate Dim i As Integer i = Sheets("Сотрудники").UsedRange.Rows.Count + 1 Sheets("Сотрудники").Cells(i, 1) = TextBox5.Value MsgBox ("Сотрудник добавлен") TextBox5.Value = "" TextBox4.Value = "" Exit Sub End Sub
Используя присваивание, после нажатия на кнопку «Добавить», введенный текст помещается в первую пустую строчку листа «Сотрудники».
Код кнопки «Назад». Private Sub CommandButton2_Click() Unload UserForm4 UserForm3.Show End Sub Закрывает форму добавления и возвращает нас на форму «Список сотрудников». Далее на форме «Список сотрудники» есть кнопка «Удалить». Её код: Private Sub CommandButton3_Click() Worksheets(1).Activate Dim n As Integer n = 0 n = MsgBox("Данные будут удалены" & Chr(10) & "Хотите продолжить?", vbOKCancel, "Удаление") If n = 1 Then i = ListBox1.ListIndex ActiveSheet.Rows(i + 2).Delete MsgBox ("Данные удалены") Else MsgBox ("Удаление отменено") End If i = Sheets("Сотрудники").UsedRange.Rows.Count ListBox1.RowSource = "A2:B" + Trim(Str(i)) Unload UserForm3 UserForm3.Show End Sub
При нажатии на эту кнопку для безопасности данных выводится окно с вопросом о точности ваших намерений. При согласии данные выбранной строки удаляться и список ниже выделенной строки поднимется на строку выше. После чего произойдет обновление списка. Кнопка «Изменить» Изменяет выделенную строку в Listbox
Её код: Private Sub CommandButton2_Click() Dim i As Integer, j As Integer, s As String, a() a = ListBox1.List: i = ListBox1.ListIndex For j = 0 To 1 s = InputBox("Столбец " & j + 1, "Введите новые данные", a(i, j)) If s <> "" Then Sheets("Сотрудники").Cells(i + 1, j + 1) = s Next i = Sheets("Сотрудники").UsedRange.Rows.Count ListBox1.RowSource = "A2:B" + Trim(Str(i)) End Sub Поочередно на экран выводятся запросы с изменением записи в таблице в порядке заполнения. Обновление происходит после закрытия последнего окна. Кнопка «Оформить продажу» Кнопка выводит на экран форму для заполнения: Private Sub CommandButton5_Click() Unload UserForm3 UserForm5.Show Sheets("Сотрудники").Activate ListBox1.ColumnWidths = "200;90" ListBox1.Clear i = 0 Do i = i + 1 ListBox1.AddItem Cells(i, 1) For j = 1 To 2 ListBox1.List(i - 1, j - 1) = Cells(i, j) Next j Loop While Cells(i + 1, 1) <> ""
End Sub
В данной форме мы заполняем данные для оформления продажи.
Код формы: Private Sub CommandButton1_Click() i = 2 Do Until Worksheets("Продажи").Cells(i, 1) = Empty i = i + 1 Loop Sheets("Продажи").Select 'Dim i As Integer 'i = Sheets("Продажи").UsedRange.Rows.Count + 1
Sheets("Продажи").Cells(i, 1) = ComboBox1.Value Sheets("Продажи").Cells(i, 2) = TextBox2.Value Sheets("Продажи").Cells(i, 3) = ComboBox3.Value Sheets("Продажи").Cells(i, 4) = TextBox3.Value Sheets("Продажи").Cells(i, 5) = TextBox4.Value Sheets("Продажи").Cells(i, 6) = TextBox1.Value MsgBox ("Продажа добавлена")
ComboBox1.Value = "" TextBox2.Value = "" ComboBox3.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox1.Value = "" End Sub
Для ускорения процесса заполнения при выборе сотрудника его данные автоматически заполняют соответствующие текстовые поля. Private Sub UserForm_Initialize() i = 2 Do Until Worksheets("Сотрудники").Cells(i, 1) = Empty i = i + 1 Loop For j = 2 To i ComboBox1.AddItem (Worksheets("Сотрудники").Cells(j, 1)) Next j
i = 2 Do Until Worksheets("Телефоны").Cells(i, 1) = Empty i = i + 1 Loop For j = 2 To i ComboBox3.AddItem (Worksheets("Телефоны").Cells(j, 2)) Next j End Sub Текстовые поля с выбором даты связаны с формами на которых находится календари. При нажатии на них пользователю будет выводится удобный календарь. После выбора даты она автоматически будет помещена в текстовое поле с указанном формате.
Private Sub Calendar1_DblClick() UserForm5.TextBox1.Value = Format(Calendar1.Value, "dd.mm.yyyy") Unload UserForm8 End Sub То есть если выбрана первая ячейка какой-то строки, то в каждое из текстовых полей заполняется соответствующими данными этой же строки. Кнопка «Оформить продажу»: Private Sub CommandButton1_Click() i = 2 Do Until Worksheets("Продажи").Cells(i, 1) = Empty i = i + 1 Loop Sheets("Продажи").Select 'Dim i As Integer 'i = Sheets("Продажи").UsedRange.Rows.Count + 1
Sheets("Продажи").Cells(i, 1) = ComboBox1.Value Sheets("Продажи").Cells(i, 2) = TextBox2.Value Sheets("Продажи").Cells(i, 3) = ComboBox3.Value Sheets("Продажи").Cells(i, 4) = TextBox3.Value Sheets("Продажи").Cells(i, 5) = TextBox4.Value Sheets("Продажи").Cells(i, 6) = TextBox1.Value MsgBox ("Продажа добавлена")
ComboBox1.Value = "" TextBox2.Value = "" ComboBox3.Value = "" TextBox3.Value = "" TextBox4.Value = "" TextBox1.Value = "" End Sub
На рабочем листе ищется первая пустая строка в которую заносятся данные. 2.3 Форма «Телефоны» Эта форма содержит в себе ListBox в который выводится список телефонов с одноименного листа рабочей книги. Позволяет добавлять, изменять, удалять, оформлять продажу. Для этого используются соответствующие кнопки «Добавить», «Изменить», «Удалить», «Назад», «Оформить продажу» Кнопки «Добавить», «Оформить продажу» и «Удалить» описаны ранее. Поэтому поговорим о кнопках «Изменить» Код кнопки «Изменить»: Private Sub CommandButton2_Click() Dim i As Integer, j As Integer, s As String, a() a = ListBox1.List: i = ListBox1.ListIndex For j = 0 To 1 s = InputBox("Столбец " & j + 1, "Введите новые данные", a(i, j)) If s <> "" Then Sheets("Телефоны").Cells(i + 1, j + 1) = s
Next i = Sheets("Телефоны").UsedRange.Rows.Count ListBox1.RowSource = "A2:B" + Trim(Str(i)) End Sub
|