/ / Excel формат на VBA потребител

Excel VBA Userform

Добавете контролите | Показване на Userform | Задайте макросите | Изпробвайте Userform

Тази глава ви учи как да създадете Excel VBA Userform, Потребителската форма, която ще създадем, изглежда така:

Excel VBA Userform

Добавете контролите

За да добавите контролите в Userform, изпълнете следните стъпки.

1. Отворете редактора на Visual Basic. Ако Explorer на проекта не е видим, щракнете върху Преглед, Проект Explorer.

2. Щракнете върху Вмъкване, Потребител. Ако Toolbox не се покаже автоматично, кликнете върху View, Toolbox. Вашият екран трябва да бъде настроен, както е описано по-долу.

Настройка на потребителския екран в Excel VBA

3. Добавете контролите, изброени в таблицата по-долу. След като това бъде завършено, резултатът трябва да съответства на картината на потребителския формат, показан по-рано. Например, създайте контрол на текстовото поле, като кликнете върху Текстова кутия от кутията с инструменти. След това можете да плъзнете текстово поле в Userform. Когато пристигнете в рамката на автомобила, не забравяйте да рисувате тази рамка преди да поставите двата бутона за избор в нея.

4. Променете имената и надписите на контролите според таблицата по-долу. Имената се използват в кода Excel VBA. Надписите са тези, които се показват на екрана ви. Добра практика е да промените имената на контролите. Това ще направи кода ви по-лесен за четене. За да промените имената и надписите на контролите, щракнете върху Преглед, Прозорец със свойства и щракнете върху всеки контролен панел.

контрол име Надпис
Userform DinnerPlannerUserForm Вечеря за планиране
Текстово поле NameTextBox
Текстово поле PhoneTextBox
Списък с полета CityListBox
Комбинирана кутия DinnerComboBox
Отметка DateCheckBox1 13 юни
Отметка DateCheckBox2 20 юни
Отметка DateCheckBox3 27 юни
Кадър CarFrame Кола
Бутон за избор CarOptionButton1 да
Бутон за избор CarOptionButton2 Не
Текстово поле MoneyTextBox
Spin Button MoneySpinButton
Команден бутон OKButton Добре
Команден бутон ClearButton ясно
Команден бутон CancelButton Отказ
7 Етикети Няма нужда да се променя Име :, Телефон :, и т.н.

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

Показване на Userform

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

Private Sub CommandButton1_Click()

DinnerPlannerUserForm.Show

End Sub

Сега ще създадем Sub UserForm_Initialize. Когато използвате метода "Показване" за Userform, този под ще се изпълни автоматично.

1. Отворете редактора на Visual Basic.

2. В Explorer на проекта кликнете с десния бутон на мишката върху DinnerPlannerUserForm и след това върху View Code.

3. Изберете Userform от левия падащ списък. Изберете "Инициализиране" от десния падащ списък.

4. Добавете следните кодови редове:

Private Sub UserForm_Initialize()

"Empty NameTextBox
NameTextBox.Value = ""

"Empty PhoneTextBox
PhoneTextBox.Value = ""

"Empty CityListBox
CityListBox.Clear

"Fill CityListBox
With CityListBox
    .AddItem "San Francisco"
    .AddItem "Oakland"
    .AddItem "Richmond"
End With

"Empty DinnerComboBox
DinnerComboBox.Clear

"Fill DinnerComboBox
With DinnerComboBox
    .AddItem "Italian"
    .AddItem "Chinese"
    .AddItem "Frites and Meat"
End With

"Uncheck DataCheckBoxes

DateCheckBox1.Value = False
DateCheckBox2.Value = False
DateCheckBox3.Value = False

"Set no car as default
CarOptionButton2.Value = True

"Empty MoneyTextBox
MoneyTextBox.Value = ""

"Set Focus on NameTextBox
NameTextBox.SetFocus

End Sub

Обяснение: текстовите полета се изпразват, списъчните полета и полетата с разширения са попълнени, квадратчетата за отметка не са отметнати и т.н.

Задайте макросите

Вече създадохме първата част от Userform. Въпреки че вече изглежда чист, нищо няма да се случи, когато щракнете върху командните бутони на Userform.

1. Отворете редактора на Visual Basic.

2. В Project Explorer кликнете два пъти върху DinnerPlannerUserForm.

3. Кликнете два пъти върху бутона Spin Money.

4. Добавете следния ред на кода:

Private Sub MoneySpinButton_Change()

MoneyTextBox.Text = MoneySpinButton.Value

End Sub

Обяснение: тази кодова линия актуализира текстовото поле, когато използвате бутона за въртене.

5. Щракнете двукратно върху бутона OK.

6. Добавете следните кодови редове:

Private Sub OKButton_Click()

Dim emptyRow As Long

"Make Sheet1 active
Sheet1.Activate

"Determine emptyRow
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

"Transfer information
Cells(emptyRow, 1).Value = NameTextBox.Value
Cells(emptyRow, 2).Value = PhoneTextBox.Value
Cells(emptyRow, 3).Value = CityListBox.Value
Cells(emptyRow, 4).Value = DinnerComboBox.Value

If DateCheckBox1.Value = True Then Cells(emptyRow, 5).Value = DateCheckBox1.Caption

If DateCheckBox2.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox2.Caption

If DateCheckBox3.Value = True Then Cells(emptyRow, 5).Value = Cells(emptyRow, 5).Value & " " & DateCheckBox3.Caption

If CarOptionButton1.Value = True Then
    Cells(emptyRow, 6).Value = "Yes"
Else
    Cells(emptyRow, 6).Value = "No"
End If

Cells(emptyRow, 7).Value = MoneyTextBox.Value

End Sub

Обяснение: първо, активираме Лист1. След това определяме emptyRow. Променливата emptyRow е първият празен ред и се увеличава всеки път, когато се добави запис. Накрая, прехвърляме информацията от Userform в конкретните колони на emptyRow.

7. Кликнете два пъти върху бутона Изчистване.

8. Добавете следния код:

Private Sub ClearButton_Click()

Call UserForm_Initialize

End Sub

Обяснение: този кодов ред извиква Sub UserForm_Initialize, когато кликнете върху бутона Clear.

9. Кликнете два пъти върху бутона Отказ.

10. Добавете следния ред на кода:

Private Sub CancelButton_Click()

Unload Me

End Sub

Обяснение: тази кодова линия затваря потребителския формат, когато кликнете върху бутона Отказ.

Изпробвайте Userform

Излезте от редактора на Visual Basic, въведете описаните по-долу етикети в ред 1 и тествайте Userform.

Резултат:

Изпробвайте Userform

Също така се чете: