Студопедия — Добавление данных в таблицы
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Добавление данных в таблицы






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

Данные процедуры работают на основе цикла

Do While Not IsEmpty(текущая)<>''''

Set следующая = текущая.Offset(1, 0)

…………………………

Set текущая = следующая

Loop,

который работает пока не дойдет до первой пустой ячейки. При этом используются переменные объектного типа, которые используются как следующая и текущая ячейки. Метод OFFSET(i,j) используется для указания на ячейку, отдаленной на i –столбцов и на j - строк относительно данной ячейки.

В теле цикла стоит оператор развилки IF…Then… Else… EndIF, который проверяет, нет ли такого же ключа в данной таблице (ключ – уникальное значение для строки, которое однозначно определяет строку).

Остальные процедуры также используют этот цикл и имеют сходную структуру программы.

Рассмотрим форму для добавления в таблицу «Ассортимент». В этой форме использованы такие элементы как Label, TextBox, CommandButton. На рисунке показано расположение и количество всех необходимых элементов управления.

Программный код для кнопки «Добавить»:

Dim текущая As Object

Dim следующая As Object

If TextBox1 = "" Or TextBox3 = "" Then

MsgBox ("Введены не все данные")

Exit Sub

End If

ActiveWorkbook.Sheets("Ассортимент").Select

Set текущая = ActiveSheet.Range("A2")

Do While Not IsEmpty(текущая)

Set следующая = текущая.Offset(1, 0)

Set текущая = следующая

Loop

текущая.Value = TextBox1.Text

текущая.Offset(0, 1).Value = TextBox2.Text

текущая.Offset(0, 2).Value = TextBox3.Text

TextBox1.Text = "";

TextBox2.Text = "";

TextBox3.Text = "";

Программный код для кнопки «Отмена»:

 

UserForm3.Hide

Для текстовых полей выполняется проверка. Для текстового поля, в которое вводится наименование изделия, выполняется проверка, чтобы вводимые данные были только текстовые (чтобы нельзя было вводить числа):

If IsNumeric(TextBox2.Text) And Len(TextBox2) <> 0 Then

MsgBox "Вводить надо текстовые данные!", vbOKOnly + vbInformation

TextBox2.Value = "";

TextBox2.SetFocus

End If

Для текстового поля, в которое вводится цена товара, выполняется проверка, чтобы вводимые данные были только числовые (чтобы нельзя было вводить текст):

 

If TextBox3.Value < 0 Then

MsgBox "Числа не должны быть отрицательные!", vbOKOnly + vbInformation

TextBox3.SetFocus

End If

If Not IsNumeric(TextBox3.Text) And Len(TextBox3) <> 0 Then

MsgBox "Вводить надо числовые данные!", vbOKOnly + vbInformation

TextBox3.Value = "";

TextBox3.SetFocus

End If

 

Рассмотрим форму для добавления в таблицу «Регистрация заказов». Особенность такого добавления в том, что продукты в ходе реализации должны выбираться из списка, который формируется с листа «Ассортимент». Для этой цели в форме создан элемент ComboBox, данные в который попадают из первого столбца таблицы «Ассортимент» (т.е. коды продуктов). После выбора из списка коды продукта автоматически заполняется текстовое поле «Наименование товара». Пользователю остается внести количество продукта – стоимость рассчитывается автоматически. Для расчета стоимости используется ранее созданный макрос ВПР. Еще одна особенность этой формы – дата выбирается с помощью элемента управления «Календарь». Итак, в этой форме использованы такие элементы как Label, TextBox, CommandButton, ComboBox и Календарь. На рисунке показано расположение и количество всех необходимых элементов управления.

Процедура для кнопки «Добавить»:

Dim i As Integer, j As Single

Dim текущая As Object, следующая As Object

If TextBox1 = "" Or TextBox2 = "" Then

MsgBox ("Введены не все данные!")

Exit Sub

End If

ActiveWorkbook.Sheets("Регистрация заказов").Select

Set текущая = ActiveSheet.Range("A6")

Do While Not IsEmpty(текущая)

Set следующая = текущая.Offset(1, 0)

Set текущая = следующая

Loop

текущая.Value = Calendar1.Value

текущая.Offset(0, 1).Value = ComboBox1.Text

текущая.Offset(0, 2).Value = TextBox1.Text

текущая.Offset(0, 3).Value = TextBox2.Text

текущая.Offset(0, 5).FormulaR1C1 = "= VLOOKUP(RC[-4],Ассортимент!R1C1:R35C4,3,FALSE)*RC[-2]";

'"=VLOOKUP(RC[-1],Ассортимент!R1C1:R8C3,2,0)";

текущая.Offset(0, 4).Value = Calendar1.Value

TextBox1.Text = "";

TextBox2.Text = "";

ComboBox1.Text = "";

 

Процедура дляComboBox заполняет список. Данные с листа «Ассортимент»:

ComboBox1.Clear

Sheets("Ассортимент").Select

Dim i As Integer, j As Integer

i = 2

Do

i = i + 1

If Cells(i, 1) = "" Then

j = i

Exit Do

End If

Loop

For h = 2 To i

ComboBox1.AddItem Cells(n, 1)

Next n

Еще одна процедура для ComboBox, которая позволяет находить наименование продукта в соответствии с выбранным кодом:

 

ActiveWorkbook.Sheets("Ассортимент").Select

Dim i As Integer

Dim j As Integer

i = 2

Do

i = i + 1

If Cells(i, 1) = "" Then

j = i

Exit Do

End If

Loop

For n = 2 To i

If ComboBox1.Text = Cells(n, 1).Value Then

TextBox1.Value = Cells(n, 2)

End If

Next n

Sheets("Регистрация заказов").Select

Процедура для кнопки Отмена – закрывает форму:

UserForm6.Hide







Дата добавления: 2015-06-15; просмотров: 319. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

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

Броматометрия и бромометрия Броматометрический метод основан на окислении вос­становителей броматом калия в кислой среде...

Метод Фольгарда (роданометрия или тиоцианатометрия) Метод Фольгарда основан на применении в качестве осадителя титрованного раствора, содержащего роданид-ионы SCN...

Потенциометрия. Потенциометрическое определение рН растворов Потенциометрия - это электрохимический метод иссле­дования и анализа веществ, основанный на зависимости равновесного электродного потенциала Е от активности (концентрации) определяемого вещества в исследуемом рас­творе...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия