Поиск и изменение данных в таблицах Excel (Visual Basic for Applications)

Поиск и изменение данных в таблицах Excel (Visual Basic for Applications)

В Excel имеется таблица в которой с помощью формы созданной на Visual Basic for Applications необходимо произвести поиск данных и изменение.

В MS Excel создана таблица следующего вида:

 

 

При нажатии на кнопку «Вызов формы» появляется пользовательская форма следующего вида:

 

 

На этой форме следующие элементы управления: 6 надписей Lable, Поле со списком ComboBox1 для выбора номера рейса и ListBox1 для списка пассажиров выбранного рейса.

Программные коды следующие:

Сначала вводим переменные:

Dim sss, ads

 

Программный код для ComboBox1

 

Private Sub ComboBox1_Change()

' эта процедура очищает ранее заполненные поля формы, и после выбора из списка номера рейса

' заполняет соответствующими фамилиями ListBox1

ListBox1.Clear

Label3.Caption = " "

Label4.Caption = " "

1 For sss = 1 To 500

If ComboBox1.Text = Sheets("Регистрация").Cells(sss, 1).Text Then

ListBox1.AddItem Sheets("Регистрация").Cells(sss, 2).Text

End If

Next

 

End Sub

 

Private Sub CommandButton1_Click()

'эта процедура для кнопки "Изменить". После выбора конкретного пассажира заполняются его данные

' в текстовых полях в форме "Изменение данных" (она называется frmChange)

If ListBox1.Text = " " Then MsgBox "Выберите фамилию пассажира": Exit Sub

frmChange.TextBox1.Text = frmПоиск.ListBox1.Text

frmChange.TextBox2.Text = frmПоиск.Label4.Caption

Dim ddd

frmПоиск.Hide

frmChange.Show

End Sub

 

Private Sub ListBox1_Click()

'после выбора конкретной фамилии в ListBox1 заполняются остальные данные -

' фамилия и № билета. Затем в невидимую надпись Label7 вносится выбранная фамилия

For i = 1 To 800

If ListBox1.Text = Sheets("Регистрация").Cells(i, 2).Text Then

Label3.Caption = Sheets("Регистрация").Cells(i, 2).Text
Label4.Caption = Sheets("Регистрация").Cells(i, 3).Text
Label7.Caption = i

End If

Next

 

End Sub

 

Private Sub UserForm_Activate()

' при активизации формы "Поиск" сначала данные сортируются по убыванию номеров рейсов,

' затем заполняется список с номерами рейсов из первого столбца таблицы.

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

Range("A2:C800").Select

Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlNo, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

1 For ads = 2 To 800

If Sheets("Регистрация").Cells(ads, 1).Text = "" Then Exit Sub

If Sheets("Регистрация").Cells(ads, 1).Text = Sheets("Регистрация").Cells(ads + 1, 1).Text Then GoTo 3
ComboBox1.AddItem Sheets("Регистрация").Cells(ads, 1).Text

3 Next

End Sub

 

Форма для изменения данных имеет вид:

 

 

Программные коды:

Private Sub CommandButton1_Click()

' переменной ddd присваивается фамилия из невидимой надписи Label7

' затем номер билета из этой строки (ddd), соответствующий данному пассажиру

' заносится в TextBox2

ddd = frmПоиск.Label7.Caption

Worksheets("Регистрация").Cells(ddd, 3) = TextBox2.Text

End Sub

 

Private Sub CommandButton2_Click()

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

Range("A2:C800").Select

Selection.Sort Key1:=Range("A2"), Order1:=xlDescending, Header:=xlNo, _

OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

 

Unload frmChange

Unload frmПоиск

Load frmПоиск

frmПоиск.Show

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

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

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