/ / Интерактивен потребителски формат VBA на Excel

Интерактивен потребителски формат

По - долу ще разгледаме програма в Excel VBA който създава интерактивен потребителски формат, Потребителската форма, която ще създадем, изглежда така:

Интерактивен потребителски формат

Обяснение: когато въведете стойност в текстовото поле ID, Excel VBA зарежда съответния запис. Когато кликнете върху бутона "Редактиране / добавяне", Excel VBA редактира записа в листа или добавя записа, когато ID все още не съществува. Бутонът Изчистване изчиства всички текстови полета. Бутонът "Затваряне" затваря потребителския формат.

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

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

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

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

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

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

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

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

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

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

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

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

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

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

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

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

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

11. Изберете TextBox1 от левия падащ списък. Изберете "Промяна" от десния падащ списък.

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

Private Sub TextBox1_Change()

GetData

End Sub

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

14. Кликнете двукратно върху командата "Редактиране / добавяне".

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

Private Sub CommandButton1_Click()

EditAdd

End Sub

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

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

Private Sub CommandButton2_Click()

ClearForm

End Sub

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

18. Кликнете два пъти върху командния бутон за затваряне.

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

Private Sub CommandButton3_Click()

Unload Me

End Sub

Обяснение: тази кодова линия затваря Userform.

Време е да създадем подводниците. Можете да прегледате нашата функция и под-глава, за да научите повече за субсидиите. Ако бързате, просто поставете следните подменюта в модул (В редактора на Visual Basic щракнете върху Вмъкни, Модул).

20. Първо, декларирайте три променливи от тип Integer и една променлива от тип Boolean. Декларирайте променливите в секцията Общи декларации (в горната част на модула). По този начин трябва само веднъж да декларирате променливите и можете да ги използвате в няколко подразделения.

Dim id As Integer, i As Integer, j As Integer, flag As Boolean

21. Добавете GetData под.

Sub GetData()

If IsNumeric(UserForm1.TextBox1.Value) Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 2 To 3
            UserForm1.Controls("TextBox" & j).Value = ""
        Next j
    End If

Else
    ClearForm
End If

End Sub

Обяснение: Ако текстовото поле ID съдържа цифрова стойност, Excel VBA търси ID и зарежда съответния запис. Използваме колекцията "Контроли", за да прескочите лесно текстовите полета. Ако Excel VBA не може да намери идентификационния номер (флагът все още е фалшив), той изпразва второто и третото текстово поле. Ако текстовото поле за идентификация не съдържа цифрова стойност, Excel VBA извиква подпрограмата ClearForm.

22. Добавете раздела ClearForm.

Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

Обяснение: Excel VBA изчиства всички текстови полета.

23. Добавете подменю EditAdd.

Sub EditAdd()

Dim emptyRow As Long

If UserForm1.TextBox1.Value <> "" Then
    flag = False
    i = 0
    id = UserForm1.TextBox1.Value
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

    Do While Cells(i + 1, 1).Value <> ""

        If Cells(i + 1, 1).Value = id Then
            flag = True
            For j = 2 To 3
                Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
            Next j
        End If

        i = i + 1

    Loop

    If flag = False Then
        For j = 1 To 3
            Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If

End If

End Sub

Обяснение: Ако текстовото поле ID не е празно, Excel VBA редактира записа на листа (обратното на зареждането на запис, както видяхме по-рано). Ако Excel VBA не може да намери идентификационния номер (флагът все още е фалшив), той добавя записа на следващия празен ред. Променливата emptyRow е първият празен ред и се увеличава всеки път, когато се добави запис.

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

Интерактивен потребителски формат

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