Удаление данных из таблицы EXCEL (Visual Basic for Applications)


Рубрика: Учебные материалы
Метки: |
Удаление данных из таблицы EXCEL (Visual Basic for Applications)

Удаленые данных в таблицах всегда востребовано, что бы поддерживать её актуальность. Основная задача удаления это отсутствие ошибок, так как удаленные данные нередко восстановить не получается. Данная функция весьма полезна при наличии огромного массива табличных данных.

Создайте в EXCEL таблицу следующего вида:

 

 

A

B

C

1

Код товара

Наименование

Количество

2

349

Яблоки

10

3

526

Груши

20

4

140

Апельсины

14

 

Перейдите в VBA (Alt+F11) . Создайте форму следующего вида:

 

 

Удаление товара будем вести по столбцу «Код товара». Код будет выбираться из списка (ComboBox). После выбора кода будут заполняться соответствующие текстовые поля для наименования и количества товара.

 

Программных кодов будет несколько.

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

Итак, делаем щелчок на ComboBox1, попадаем в окно редактирования кода:

Private Sub ComboBox1_Change()

End Sub

 

Создаем программу следующего вида:

 

Private Sub ComboBox1_Change()

ActiveWorkbook.Sheets("Лист1").Select

'вводим вспомогательные переменные i, j n

' в переменной i перебираются номера строк из базы данных начиная со второй и ‘заканчивая последней непустой строкой

' номер которой определен в переменной Строка

' переменная j выполняет роль счетчика, учитывающего количество отобранных ‘вариантов

Dim i As Integer

Dim j As Integer

Dim n As Integer

Dim Строка As Integer

Строка = Application.CountA(Sheets("Лист1").Columns(1))

i = 1

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)

TextBox2.Value = Cells(n, 3)

End If

Next n

End Sub

 

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

Программный код привязываем также к элементу ComboBox1, но событие – Enter

Private Sub ComboBox1_Enter()

ComboBox1.Clear

Sheets("Лист1").Select

Dim i As Integer, j As Integer, Строка As Integer

Строка = Application.CountA(Sheets("Лист1").Columns(1))

i = 2

Do While i <= Строка

i = i + 1

If Cells(i, 1) = " " Then

j = i

Exit Do

End If

Loop

For a = 2 To i

ComboBox1.AddItem Cells(a, 1)

Next a

End Sub

 

Далее запишем код программы для элемента управления Кнопка (Удалить). Т.е. как будет происходить непосредственное удаление данных из таблицы при выборе конкретного кода товара:

Private Sub CommandButton1_Click()

Me.Hide

If ComboBox1.Text = Empty Then

MsgBox "Вы должны выбрать код изделия"

Me.Show

Else

f = MsgBox("Сейчас произойдет удаление", vbOKCancel)

End If

If f = vbOK Then

Sheets("Лист1").Select

Dim i As Integer

Dim j As Integer

Dim Строка As Integer

Строка = Application.CountA(Sheets("Лист1").Columns(1))

i = 2

Do While i <= Строка

i = i + 1

If Cells(i, 1) = " " Then

j = i

Exit Do

End If

Loop

For b = 2 To i

If ComboBox1.Text = Cells(b, 1) Then

Cells(b, 1).Select

Selection. EntireRow. Delete

End If

Next b

End If

End Sub

 

И последний код: очистка полей формы при активизации:

Private Sub UserForm_Activate()

TextBox1.Text = " "

TextBox2.Text = " "

ComboBox1.Text = " "

End Sub

 

Не забудьте создать код и для кнопки «Закрыть»:

Private Sub CommandButton2_Click()

UserForm1.Hide

End Sub

Оставьте комментарий!

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)