Създайте лесно форми в Excel с помощта на VBA

Posted by
/ / Leave a comment

Ще ви представя един бърз и лесен начин за създаване на формa в Microsoft Excel и за събиране на информацията, която се въвежда в тази форма, с помощта на Visual Basic for Excel.

form-excel-vba

Примерна форма – отпуск на служителя

Главните елементи в потребителските електронни форми се наричат контроли.Най-основните контроли, които могат да се добавят към Excel VBA, са:

  • Label – примери на етикети в показаната форма са: „Име“, „Отдел“и др.
  • TextBox – полетата до етикетите „Име“, „Фамилия“ са текстови.
  • Comboboxes – нарича се още „Падащ списък” – контрола с определено съдържание, от което може да се избира една единствена стойност.
  • ChechBox – квадратчетата за избор. Служат за избор на няколко опции едновременно. Могат да се избират повече от едно. Изборът на месеци е с ChechBox.
  • RadioButton – бутони за избор. При тях се избира едно от много. В случай, че се избере едно, то другото се изключва. Изборът на превозно средство е зададен чрез RadioButton
  • Button – Командни бутони. Три командни бутони в долната част на формата, са примери за командни бутони.

Създаване на потребителска форма

  1. Отворете Visual Basic.
  2. Изберете десен бутон върху файла, в който искате да добавите потребителска форма.
  3. От Insert ->UserForm. Екрана би трябвало да изглежда така:

excel-form-vba

Ако не се вижда лентата с инструменти Toolbox, то се избира View ->Toolbox.
4. Добавят се различните контроли върху формата
5. Задават се съответните имена на всички контроли, както и текста, който да се показва. Това се прави в Properties на всяка от контролите, където полето Name служи за задаване на служебно име, а полето Caption за име, което ще се изобразява на екрана.

table-excel-vba

Съвет: Добра практика е да се преименуват имената на контролите. Това прави кода по-четим.

Отваряне на форма

За да се отвори формата за попълване може да се използва следния код, който да се присвои към бутон от работния лист:

Private Sub CommandButton1_Click()
UserForm1.Show
End Sub

UserForm_Initialize – инициализиране на форма.

Това е най-важната част (инициализиране), за да работи формата.
За да инициализираме форматa:

1. Променя се изгледа на View Code:

vba-excel

2. Изписва се следния код, в който важната част е изписана в заглавието: Initialize. Останалата част от кода описва опциите в падащия списък:

Private Sub UserForm_Initialize()
With ComboBoxDepartment
.AddItem "IT"
.AddItem "Security"
.AddItem "Finance"
End With
End Sub

Събиране на въведената информация

Това става с избирането на бутон OK. Този бутон трябва да съдържа следния код:

Private Sub OKButton_Click()
Dim emptyRow As Integer
‘определяне на последен ред
Sheets(1).Select
Range("A1").Select
Selection.CurrentRegion.Select
emptyRow = Selection.Rows.Count + 1
‘въвеждане на име
Cells (emptyRow, 1).Value = txtName.Value
‘въвеждане на Фамилия
Cells (emptyRow, 2).Value = txtLastName.Value
‘въвеждане на отдел
Cells (emptyRow, 3).Value = ComboBoxDepartment.Value
‘въвеждане на стойности от CheckBox
If CheckBox1.Value = True Then Cells (emptyRow, 4).Value = CheckBox1.Caption
If CheckBox2.Value = True Then Cells (emptyRow, 4).Value = Cells (emptyRow, 4).Value & " " & CheckBox2.Caption
If CheckBox3.Value = True Then Cells (emptyRow, 4).Value = Cells (emptyRow, 4).Value & " " & CheckBox3.Caption
‘въвеждане на стойности от Радио бутон
If OptionButton1.Value = True Then
Cells (emptyRow, 5).Value = "Лек автомобил"
Else
Cells (emptyRow, 5).Value = "Автобус"
End If
End Sub

Затваряне на форма

Следния код затваря прозореца на формата:

Private Sub CancelButton_Click()
Unload Me
End Sub

Изчистване на форма

Следния код изчиства формата:

Private Sub ClearButton_Click()
'Изчистване на txtName
txtName.Value = ""
' Изчистване на txtLastName
txtLastName.Value = ""
‘Изчистване на ComboBoxDepartment
ComboBoxDepartment.Value = ""
‘Изчистване на CheckBoxes
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
' Изчистване на OptionButton
OptionButton1.Value = False
OptionButton2.Value = False
End Sub

Още публикации по темата: