Worksheets (1). Spisok 1. Clear

‘ Далее производится подсчет количества видов системных блоков.

N = 0

While Worksheets(2).Cells(N + 2, 1).Value <> “”

N = N + 1

Wend

N – переменная, в которой мы таким образом подсчитали количество

записей в первом столбце прайса. В качестве условия у нас используется следующая конструкция

‘ Worksheets(2).Cells(N + 2, 1).Value < > "".

‘ Здесь Worksheets(2) – второй лист книги и этот лист - Прайс.

‘ Cells (…) – функция выбора ячейки.

‘ В скобках указывается номер строки и номер столбца.

‘ Знак < > обозначает не равно.

‘ Далее "" – обозначает, что ячейка пустая. Таким образом, в совокупности эта запись обозначает выполнение цикла, пока значение в очередной ячейки в списке системных блоков не окажется пустым.

‘ В итоге мы подсчитали количество непустых ячеек в списке системных блоков (фактически сколько системных блоков в прайсе).

For i = 2 To N + 2

Worksheets(1).Spisok1.AddItem Worksheets(2).Cells(i, 1).Value

Next

‘ В записи Worksheets (1). Spisok 1 используется список Spisok 1 на первом рабочем листе. Метод AddItem добавляет в список строку. Далее через пробел записывается строка, которая добавляется , а именно значение

‘ (свойства Value) ячейки ( Cells ( i , 1) ) из листа Worksheets (2).

‘ В следующем фрагменте производится аналогичное заполнение второго списка.

Worksheets(1).Spisok2.Clear

N = 0

While Worksheets(2).Cells(N + 2, 3).Value <> ""

N = N + 1

Wend

For i = 2 To N + 2

Worksheets(1).Spisok2.AddItem Worksheets(2).Cells(i, 3).Value

Next

‘В следующем фрагменте производится заполнение третьего списка.

Worksheets(1).Spisok3.Clear

N = 0

While Worksheets(2).Cells(N + 2, 5).Value <> ""

N = N + 1

Wend

For i = 2 To N + 2

Worksheets(1).Spisok3.AddItem Worksheets(2).Cells(i, 5).Value

Next

End Sub

 

Таким образом, процедура Workbook_Open() обеспечивает заполнение списков данными со второго листа (из прайса).

Далее на рис. 4.6 показана процедура, выполняемая при щелчке по первому полю со списком (Spisok1), когда мы выбираем из списка ту или иную строку.

Рис. 4.6.

 

Строка Range("c7").Value =Worksheets(2).Cells(Spisok1.ListIndex + 2, 2). Value позволяет заполнить ячейку С7 ценой системного блока. При этом Spisok 1. ListIndex – индекс элемента, который выделен щелчком мыши. Щелчки по двум другим спискам приводят к аналогичным действиям ( они приводят к заполнению цен монитора и принтера). Эти процедуры приводятся далее.

Private Sub Spisok2_Click()

Range("c8").Value = Worksheets(2).Cells(Spisok2.ListIndex + 2, 4).Value

End Sub

 

Private Sub Spisok3_Click()

Range("c9").Value = Worksheets(2).Cells(Spisok3.ListIndex + 2, 6).Value

End Sub

 

Таким образом в результате мы получили автоматизированное заполнение бланка заказа (рис. 4.7).

Рис. 4.7.

В ячейку С12 вставим функцию для вычисления суммы.

Рассмотрим действия при нажатии на кнопку Печать. Наша цель заключается в том, чтобы на 3-м листе создать печатную (автоматически заполняемую) форму (рис. 4.8).

 

Рис. 4.8.

Первая задача чисто техническая – обеспечить форматирование листа. Для этого нужно ввести текст в соответствующие ячейки и установить границы области. Далее необходимо написать процедуру, выполняемую по щелчку по кнопке Печать. Для этого перейдите в редактор исходного кода (двойным щелчком по кнопке «Печать» в режиме конструктора). Запишите текст процедуры:

 

Private Sub CommandButton1_Click()

Worksheets(3).Cells(10, 2).Value = Worksheets(1).Cells(7, 1).Value + " "

+ Spisok1.Text

‘ На третьем листе будет автоматически формироваться печатная форма бланка. Ячейка на пересечении 10-й строки и второго столбца будет содержать информацию о системном блоке. В эту ячейку записывается информация с первого листа – о названии системного блока.

Worksheets(3).Cells(10,3).Value = Worksheets(2).Cells(Spisok1.ListIndex + 2,2).Value

‘Ячейка на пересечении 10-й строки и третьего столбца будет содержать информацию о стоимости системного блока.

‘ В эту ячейку записывается информация из второго листа с учетом выбора из списка.

Worksheets(3).Cells(11, 2).Value = Worksheets(1).Cells(8, 1).Value + " " + Spisok2.Text

Worksheets(3).Cells(11, 3).Value = Worksheets(2).Cells(Spisok2.ListIndex + 2,4).Value

‘ Ячейка на пересечении 11-й строки и второго столбца будет содержать информацию о принтере. В эту ячейку записывается информация с первого листа – название принтера.

‘ Ячейка на пересечении 11-й строки и третьего столбца будет содержать информацию о стоимости принтера. В эту ячейку записывается информация из второго листа, соответствующая выбранному названию из списка.

Worksheets(3).Range("c3").Value = TextBox1.Text

Worksheets(3).Activate

End Sub

 

В приведенной процедуре не предусматривается заполнения параметров монитора. Добавьте эту запись самостоятельно.