Материал: Базовые технологии в табличном процессе Exel - Учебное пособие (Ильина О.П.)

Предмет: Информационные технологии

Просмотров: 3405


Ввод данных о движении товаров

Данные накладных по приходу и расходу товаров переносятся в базу данных Движение  с помощью командной кнопки, размещенной на листе Документ. Основные этапы работ:

1. Подготовка программного модуля на языке Visual Basic

2. Отладка программного модуля

3. Запуск программного модуля.

Создание программного модуля

1. Выполнить команду Сервис, Макрос, Редактор Visual Basic

2. Выполнить команду Вставка, Модуль.

 

 

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

3. Текст программного модуля:

 

' Обязательное объявление всех переменных, используемых в модуле

Option Explicit

' Пользовательский тип данных для добавления данных документа

‘ в базу данных

‘ Объявление пользовательского типа данных – shet

' Объявление переменных различных типов: String – текст,

‘Integer целое, Variant произвольное, Date – дата, Long число

Type shet

Товар As String Наименование As String Едизм As String

Цена As Long

Количество  As Long

End Type

Dim sh() As shet Dim nr As Integer Dim nc As Integer Dim i As Integer Dim str1 As Variant Dim str As Date

Dim str2 As Variant

 

4. Выполнить команду меню Вставка, Процедура,  указать имя процедуры Накладная_в_БД

5. Текст программного модуля:

' начало процедуры переноса данных документа в базу данных

Sub Накладная_в_БД()

' выбор блока Накладная, находящегося на листе Документ

Application.Goto Reference:="Накладная"

'определение количества строк в блоке Накладная

nr = Selection.Rows.Count

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

ReDim sh(nr)

' установка на начало области блока Накладная

 

 

ActiveCell.Offset(1, 0).Range("A1").Select

' цикл формирования элементов динамического массива

‘ на основании блока Накладная

For i = 1 To nr

sh(i).Товар  = Range("Накладная").Cells(i, 1).Value sh(i).Наименование = Range("Накладная").Cells(i, 2).Value sh(i).Едизм = Range("Накладная").Cells(i, 3).Value sh(i).Цена = Range("Накладная").Cells(i, 4).Value sh(i).Количество = Range("Накладная").Cells(i, 5).Value Next i

i = 1

' присвоение переменной str2 номера накладной

Range("C1").Select str2 = ActiveCell.Value

' присвоение переменной str даты выписки накладной

Range("F1").Select

str = ActiveCell.Value

' присвоение переменной str1 названия организации

Range("C3").Select str1 = ActiveCell.Value

' выбор блока База_данных

Application.Goto Reference:="База_данных"

' установка на ячейку А2

ActiveCell.Offset(1, 0).Range("A1").Select

' вставка новой записи в базу данных

Selection.EntireRow.Insert

' организация цикла добавления новой строки в блок База_данных

‘заполнение ячеек строки данными динамического массива

‘счетчик цикла равен числу строк

‘табличной части документа Накладная

For i = 1 To nr

Cells(i + 1, 1).Value = str

Cells(i + 1, 2).Value = sh(i).Товар

Cells(i + 1, 3).Value = sh(i).Наименование

Cells(i + 1, 4).Value = sh(i).Едизм Cells(i + 1, 5).Value = sh(i).Цена Cells(i + 1, 6).Value = str1

Cells(i + 1, 7).Value = str2

' проверка вида документа для заполнения ячеек и вычисление

‘стоимости поступивших и стоимости отгруженных товаров

 

 

If Range("Вид_движения").Value = 1 Then _ Cells(i + 1, 8).Value = sh(i).Количество

If Range("Вид_движения").Value = 2 Then _ Cells(i + 1, 9).Value = sh(i).Количество

'формулы вычисления стоимости поставки/отгрузки товаров

Cells(i + 1, 10).FormulaR1C1 = "=RC[-2]*RC[-5]" Cells(i + 1, 11).FormulaR1C1 = "=RC[-2]*RC[-6]"

‘ перемещение курсора на начало строки

Selection.End(xlToLeft).Select

ActiveCell.Offset(1, 0).Range("A1").Select

‘ вставка пустой строки

Selection.EntireRow.Insert

‘ повторение цикла

Next i

' удаление лишней пустой строки в блоке Движение

Selection.EntireRow.Delete

' конец прцедуры

End Sub

Отладка программного модуля

1. Заполнить лист Документ первичными данными.

2. Перейти на лист программного модуля и выполнить команду меню

Запуск, Запуск подпрограммы.

3. Перейти на лист Движение и проверить правильность формирования записей списка.

4. Перейти на лист Итоги и проверить изменение остатков товаров.

5. Перейти на лист Расчеты и проверить изменение итоговых показателей.

6. Если обработка выполняется корректно, перейти на лист Движение, удалить введенные строки, оставив первую вспомогательную строку блока База_данных, проверить его границы (блок База_данных должен содержать строку заголовков столбцов и хотя бы одну строку).

Запуск программы

Для запуска программного модуля может использоваться команда меню Сервис,  Макрос,  Макросы. В списке макросов выбрать макрос Накладная_в_БД и нажать кнопку Выполнить.

Другой способ запуска использование командной кнопки, которая

размещается в форме документа Накладная:

1. Снять защиту с листа Документ, разместить кнопку запуска модуля Накладная_в_БД:

 

 

♦ Выполнить команду меню Вид, Панели  инструментов, выбрать панель Формы.

♦ Выбрать кнопку и назначить ей макрос – Накладная_в_БД.

♦ Изменить название кнопки – Запись документа.

2. Защитить лист Документ.

3. Заполнить документ и нажать кнопку для переноса данных в базу данных Движение. При заполнении документа рекомендуется ввести разные даты( несколько) для одной и той же организации и ввести разные организации( несколько).

4. Перейти в базу данных, проверить наличие новых данных и сохранность определения блока База_данных.

 


Загрузка...