End Sub
End
End Sub
End Sub
UserForm1.Show
Loop
Loop
k = 2
Do While Worksheets(«Товары»).Cells(k, 1) <> «»
UserForm1.ComboBox2.AddItem Worksheets(«Товары»).Cells(k, 1)
k = k + 1
В тексте программы учтено, что первая строка на рабочих «Товары» и «Заказчики» содержит названия столбцов и поэтому цикл начинается со значения k = 2. При этом циклы для заполнения комбинированных списков «Заказчики» и «Товары» практически совпадают, однако их нельзя объединить в один, поскольку количество заказчиков и товаров может быть разным.
Командная кнопка «Очистка» на листе «Платеж» должна очищать те ячейки, которые будут заполняться после выполнения диалога на окне UserForm1. Для очистки ячеек используется метод ClearContents, а область очищаемых ячеек задается объектом Range:
Sub CommandButton2_Click()
Worksheets("Платеж").Range("b8:b10").ClearContents
Worksheets("Платеж ").Range("a13:d13").ClearContents
Worksheets("Платеж ").Range("b17").ClearContents
Поскольку кнопка «Очистка» находится на листе «Платеж», то указание листа (Worksheets("Платеж").)можно опустить.
В ходе выполнения диалога в окне UserForm1необходимо раскрыть и выбрать из списка «Заказчик» фирму-заказчика, а из списка «Товар» наименование товара. В поле Количество заказчик определяет нужное ему количество товара.
Программа для командной кнопки «Принять заказ» на форме пользователя должна заполнить ячейки на рабочем листе «Платеж», подсчитать стоимость товара и заполнить поле даты. В программе учтено то, что нумерация элементов в комбинированном списке начинается с нуля.
Sub CommandButton1_Click()
n = ComboBox1.ListIndex + 1
Worksheets("Платеж").Range("b8") = Worksheets("Заказчи-ки").Cells(n + 1, 1)
Worksheets("Платеж").Range("b9") = Worksheets("Заказчи-ки").Cells(n + 1, 2)
Worksheets("Платеж").Range("b10") = Worksheets("Заказчи-ки").Cells(n + 1, 4)
m = ComboBox1.ListIndex + 1
Worksheets("Платеж").Range("a13") = Worksheets("Товары").Cells(m + 1, 1)
Worksheets("Платеж").Range("b13") = Worksheets("Товары").Cells(m + 1, 2)
Worksheets("Платеж").Range("c13") = TextBox1.Text
a1 = Worksheets("Платеж").Range("b13")
a2 = Worksheets("Платеж").Range("c13")
Worksheets("Платеж").Range("d13") = a1 * a2
Worksheets("Товары").Cells(m + 1, 3) = Workheets("Товары").Cells(m + 1, 3) - TextBox1.Text
Worksheets("Платеж").Range("b17") = Date
Worksheets("Платеж").Activate
Встроенная функция Date определяет текущую дату. При выполнении оператора Endпроизойдет закрытиедиалогового окна пользовательской формы и на экране останется лист «Платеж».
После формирования листа «Платеж» его можно напечатать с помощью кнопки «Печать», которая может быть размещена на этом же листе вне ячеек с информацией:
Sub CommandButton3_Click()
Worksheets("Платеж").Range("a1:e18").PrintOut