Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

3.Автоматизация в бизнес-задачах

Большинство малых и средних коммерческих организаций решают задачи учета материальных ценностей (товаров или продукции) с помощью приложения Microsoft Excel. В этой главе мы рассмотрим несколько примеров на данную тему из реальной практики. Все они связаны с реализацией автоматизированных книг, которые сокращают число рутинных действий в офисной работе, а также обеспечивают контроль возможных случайных ошибок.

Учет поступлений и продаж

Рассмотрим достаточно стандартную ситуацию, когда наша организация занимается торговлей – закупкой товаров и последующей их продажей. В этом случае необходимо вести точный учет номенклатуры (количества товаров, цен поступления и продажи). Начнем нашу разработку с листа под названием Номенклатура (рис.3.1). Информация, приведенная на этом листе, не требует комментария. Наша цель заключается в разработке еще трех листов, которые обеспечат удобный интерфейс для работы менеджеров.

Рис.3.1.

Итак, напрямую работа с листом на рис.3.1 нежелательна. Конечно при поступлении, либо продаже можно напрямую вносить в данный лист данные. Так, скажем, при приходе новой партии стенок Уют в количестве 5 штук по новой цена 27 770 рублей можно напрямую скорректировать и количество единиц и цену поступления в необходимой строке (предполагается, что в качестве цены поступления конкретных товаров устанавливается цена последней поставки). Однако это и не очень удобно и является “плацдармом” для возможных ошибок со стороны пользователя. Более удобно создать лист управления (рис.3.2).

НЕ нашли? Не то? Что вы ищете?

Рис.3.2.

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

Перейдем к рассмотрению деталей. Так, левая половина листа организована для новых поступлений товаров, которые уже имеются в информационной базе. Верхний список заполняется названиями товаров уже имеющимися в информационной базе. Это производится при открытии рабочей книги (текст процедуры приведен на листинге 3.1). В тексте процедуры предполагается, что в качестве значения свойства Name выбрано Spk.

Листинг 3.1. Процедура, выполняемая при открытии книги

Private Sub Workbook_Open()

' Очистка списка

Worksheets(1).Spk. Clear

' Подсчет количества товаров в информационной базе

N = 0

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

N = N + 1

Wend

' Заполнение списка

For i = 1 To N

Worksheets(1).Spk. AddItem Worksheets(3).Cells(i + 1, 1).Value

Next

Worksheets(1).Spk. ListIndex = -1

End Sub

После выбора названия товара в поле со списком в ячейку С5 заносится цена с третьего листа книги. Для этого процедуру, выполняемую при щелчке по списку оформить так, как показано на листинге 3.2. В ней также ничего принципиально нового (по сравнению с ранее рассмотренными примерами) нет.

Листинг 3.2. Процедура обработки

Private Sub Spk_Click()

Range("c5").Value = _

Worksheets(3).Cells(Spk. ListIndex + 2, 2).Value

End Sub

Теперь от пользователя требуется внести количество единиц нового поступления указанного товара и нажать кнопку Внести. Однако для повышения защищенности от случайных действий мы разместили еще поля для пароля (ниже кнопки Внести).

Так, мы обеспечим внесение информации о новом поступлении (увеличении числа указанных товаров) на третий лист только при вводе конкретного пароля в текстовое окно для пароля (Name – Pass). Для этого процедуру, выполняемую при щелчке по кнопки Внести необходимо оформить так, как показано на листинге 3.3.

Листинг 3.3. Обработка щелчка по кнопке Внести

Private Sub CommandButton1_Click()

If Pass. Text = "357" Then

Worksheets(3).Cells(Spk. ListIndex + 2, 2).Value = Range("c5").Value

Col = Range("C6").Value

Worksheets(3).Cells(Spk. ListIndex + 2, 4).Value = _

Worksheets(3).Cells(Spk. ListIndex + 2, 4).Value + Col

MsgBox "Данные внесены"

Pass. Text = ""

Else

MsgBox "Ошибка пароля! Данные не внесены"

End If

End Sub

Здесь при введении пароля 357 на третий лист будет добавлено количество товара в указанную строку. Далее на экран выводится информационное сообщение, что данные внесены и очищается поля пароля.

Теперь перейдем к рассмотрению правой части на рис.3.2. Этот фрагмент необходимо использовать при внесении нового товара (с указанием количества).

Листинг 3.4. Обработка щелчка по кнопке Внести новый товар

Private Sub CommandButton2_Click()

N = 0

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

N = N + 1

Wend

If Pass2.Text = "35791" Then

Worksheets(3).Cells(N + 2, 1).Value = Range("c3").Value

Worksheets(3).Cells(N + 2, 2).Value = Range("c4").Value

Worksheets(3).Cells(N + 2, 4).Value = Range("c5").Value

MsgBox "Данные внесены"

Pass. Text = ""

Else

MsgBox "Ошибка пароля! Данные не внесены"

End If

End Sub

Мы использовали в процедуре другое поле для пароля (Name - Pass2). Теперь перейдем к другому листу – Отгрузка (рис.3.3).

Рис.3.3.

На листе Отгрузка расположено два элемента управления – Поле со списком и Кнопка. Для заполнения списка необходимо процедуру Workbook_Open (листинг 3.5).

Листинг 3.5. Процедура, выполняемая при открытии книги

Private Sub Workbook_Open()

' Очистка списка

Worksheets(1).Spk. Clear

Worksheets(2).Spk. Clear

' Подсчет количества записей в прайсе на втором листе

N = 0

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

N = N + 1

Wend

' Заполнение списка

For i = 1 To N

Worksheets(1).Spk. AddItem Worksheets(3).Cells(i + 1, 1).Value

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

Next

Worksheets(1).Spk. ListIndex = -1

Worksheets(2).Spk. ListIndex = -1

End Sub

На очереди следующая процедура (листинг 3.6),которая выполняется при щелчке по списку. В результате на лист Отгрузка будет внесено количество товара и цена отгрузки.

Листинг 3.6. Процедура, выполняемая при щелчке по полю со списком

Private Sub Spk_Click()

Range("e6").Value = _

Worksheets(3).Cells(Spk. ListIndex + 2, 4).Value

Range("e7").Value = _

Worksheets(3).Cells(Spk. ListIndex + 2, 3).Value

End Sub

Листинг 3.7. Процедура, выполняемая при щелчке по кнопке

Private Sub CommandButton1_Click()

If Pass. Text = "357" Then

ColPrais = Worksheets(3).Cells(Spk. ListIndex + 2, 4).Value

Col = Range("C6").Value

If Col > ColPais Then

MsgBox "Òàêîãî êîëè÷åñòâà òîâàðà íà ñêëàäå íåò"

Exit Sub

End If

Worksheets(3).Cells(Spk. ListIndex + 2, 2).Value = Range("c5").Value

ColPrais = ColPrais - Col

Worksheets(3).Cells(Spk. ListIndex + 2, 4).Value = ColPrais

MsgBox "Äàííûå âíåñåíû"

Pass. Text = ""

Else

MsgBox "Îøèáêà ïàðîëÿ! Äàííûå íå âíåñåíû"

End If

End Sub