/ / Екцел ВБА Интерацтиве Усерформ

Екцел ВБА Интерацтиве Усерформ

У наставку ћемо погледати програм Екцел ВБА што ствара интерактивни Усерформ. Кориснички облик који ћемо креирати изгледа овако:

Екцел ВБА Интерацтиве Усерформ

Објашњење: кад год унесете вредност у поље за текст ИД, Екцел ВБА учитава одговарајући запис. Када кликнете на дугме Едит / Адд, Екцел ВБА уређује запис на листу или додаје запис када ИД још увек не постоји. Тастер Цлеар уклања све текстуалне оквире. Дугме Затвори затвара Усерформ.

Да бисте креирали овај Усерформ, извршите следеће кораке.

1. Отворите Висуал Басиц Едитор. Ако Пројецт Екплорер није видљив, кликните Виев, Пројецт Екплорер.

2. Кликните на Инсерт, Усерформ. Ако се Тоолбок не појави аутоматски, кликните Виев, Тоолбок. Ваш екран треба да буде подешен као доле.

Усерформ Сцреен Сетуп у Екцел ВБА

3. Додајте етикете, текстуалне кутије (прво на врху, друго испод прве и тако даље) и командне дугмади. Када ово буде завршено, резултат мора бити у складу са приказом корисничког образца који је приказан раније. На пример, креирајте контролу над текстуалним оквиром кликом на ТектБок из алатке. Затим можете превући текст поље на Усерформ.

4. Можете променити имена и називе контрола. Имена се користе у Екцел ВБА коду. Написи су они који се појављују на вашем екрану. Добра је пракса да промените имена контрола, али овде није неопходно, јер у овом примеру имамо само неколико контрола. Да бисте променили назив наљепница, текстуалних поља и командних дугмади, кликните Виев, Пропертиес Виндов и кликните на сваку контролу.

5. Да бисте приказали Усерформ, ставите командно дугме на свој радни лист и додајте следећу линију кода:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Сада ћемо креирати Суб УсерФорм_Инитиализе. Када користите методу Схов за Усерформ, овај суб ће аутоматски бити извршен.

6. Отворите Висуал Басиц Едитор.

7. У Пројецт Екплорер-у кликните десним тастером миша на УсерФорм1 и кликните на Виев Цоде.

8. Из падајуће листе изаберите ставку Усерформ. Изаберите Инитиализе са десне падајуће листе.

9. Додајте следећу линију кода:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Објашњење: ова линија кода поставља фокус на прво поље за текст јер ово је место на којем желимо да започнемо када се Усерформ учита.

Сада смо направили први део Усерформ-а. Иако изгледа добро, ништа се неће догодити када унесемо вредност у текстуално поље или када кликнемо на једно од командних дугмади.

10. У Пројецт Екплорер-у кликните десним тастером миша на УсерФорм1 и кликните на Виев Цоде.

11. Изаберите ТектБок1 са леве падајуће листе. Изаберите Промени са десне падајуће листе.

12. Додајте следећу линију кода:

Private Sub TextBox1_Change()

GetData

End Sub

13. У Пројецт Екплорер-у двапут кликните на УсерФорм1.

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

Објашњење: ова линија кода затвара Усерформ.

Време је да се направи подскуп. Можете проћи кроз нашу функцију и под поглавље како бисте сазнали више о субс. Ако сте у журби, једноставно поставите следеће суб-модуле у модул (У Висуал Басиц Едитор-у, кликните на Инсерт, Модуле).

20. Прво, декларишите три варијабле типа Интегер и једну варијаблу типа Боолеан. Обележите променљиве у одељку Опште декларације (на врху модула). На овај начин морате само једном да декларишете променљиве и можете их користити у више подлога.

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

21. Додајте ГетДата суб.

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

Објашњење: Ако поље за идентификацију ИД-а садржи нумеричку вредност, Екцел ВБА тражи ИД и учитава одговарајући запис. Користимо колекцију Цонтролс за једноставно кружење кроз текстуалне кутије. Ако Екцел ВБА не може да пронађе ИД (застава је и даље неисправна), она испразни друго и треће поље за текст. Ако поље за идентификацију ИД-а не садржи нумеричку вредност, Екцел ВБА позове ЦлеарФорм суб.

22. Додајте ЦлеарФорм суб.

Sub ClearForm()

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

End Sub

Објашњење: Екцел ВБА брише све текстуалне оквире.

23. Додајте поднаслов ЕдитАдд.

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

Објашњење: Ако поље за текст ИД није празно, Екцел ВБА уређује запис на листу (супротно од учитавања записа као што смо раније видели). Ако Екцел ВБА не може да пронађе ИД (застава је и даље неисправна), додаје запис до следећег празног реда. Варијабла емптиРов је први празан ред и повећава се сваки пут када се дода запис.

24. Изађите из Висуал Басиц Едитор-а, унесите етикете приказане испод у ред 1 и тестирајте Усерформ.

Екцел ВБА Интерацтиве Усерформ

Такође прочитајте: