/ / Excel VBA Etkileşimli Kullanıcı Formu

Excel VBA Etkileşimli Kullanıcı Formu

Aşağıda bir programa bakacağız Excel VBA Bu bir oluşturur etkileşimli Kullanıcı formu. Oluşturulacak olan Userform aşağıdaki gibi görünür:

Excel VBA Etkileşimli Kullanıcı Formu

Açıklama: Kimlik metin kutusuna bir değer girdiğinizde, Excel VBA ilgili kaydı yükler. Düzenle / Ekle düğmesini tıklattığınızda, Excel VBA sayfadaki kaydı düzenler veya kimlik henüz olmadığında kaydı ekler. Temizle düğmesi tüm metin kutularını temizler. Kapat düğmesi Kullanıcı Formunu kapatır.

Bu Kullanıcı Formunu oluşturmak için aşağıdaki adımları uygulayın.

1. Visual Basic Düzenleyicisi'ni açın. Proje Gezgini görünmüyorsa, Görüntüle, Proje Gezgini'ni tıklatın.

2. Ekle, Kullanıcı formu'nu tıklayın. Araç Kutusu otomatik olarak görünmezse, Görünüm, Araç Kutusu'nu tıklatın. Ekranınız aşağıdaki gibi ayarlanmalıdır.

Excel VBA'da Kullanıcı Formu Ekranı Kurulumu

3. Etiketleri, metin kutularını (ilk önce üstte, ikincisinin altında ikinci, vb.) Ve komut düğmelerini ekleyin. Bu tamamlandıktan sonra sonuç, daha önce gösterilen Kullanıcı Formunun resmi ile tutarlı olmalıdır. Örneğin, Toolbox'tan TextBox'a tıklayarak bir metin kutusu kontrolü oluşturun. Ardından, Userform'a bir metin kutusu sürükleyebilirsiniz.

4. Kontrollerin isimlerini ve başlıklarını değiştirebilirsiniz. Adlar Excel VBA kodunda kullanılır. Altyazılar, ekranınızda görünenlerdir. Kontrollerin isimlerini değiştirmek iyi bir uygulamadır, ancak burada gerekli değildir çünkü bu örnekte sadece birkaç kontrolümüz vardır. Etiketlerin, metin kutularının ve komut düğmelerinin altyazısını değiştirmek için Görünüm, Özellikler Penceresi'ni tıklayın ve her bir denetimi tıklayın.

5. Kullanıcı formunu göstermek için çalışma sayfanıza bir komut düğmesi yerleştirin ve aşağıdaki kod satırını ekleyin:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Şimdi Sub UserForm_Initialize oluşturacağız. Userform için Show yöntemini kullandığınızda, bu sub otomatik olarak yürütülür.

6. Visual Basic Düzenleyicisi'ni açın.

7. Proje Gezgini'nde, UserForm1'e sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

8. Soldaki açılır listeden Userform'u seçin. Sağdaki açılır listeden Sıfırla'yı seçin.

9. Aşağıdaki kod satırını ekleyin:

Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub

Açıklama: Bu kod satırı, ilk metin kutusuna odağı ayarlar, çünkü Userform yüklendiğinde başlamak istediğimiz yerdir.

Şimdi, Userform'un ilk bölümünü oluşturduk. Zaten düzgün görünmesine rağmen, kimlik metin kutusuna bir değer girdiğimizde veya komut düğmelerinden birine tıkladığımızda hiçbir şey olmayacak.

10. Proje Gezgini'nde, UserForm1'e sağ tıklayın ve ardından Kodu Görüntüle'ye tıklayın.

11. Soldaki açılır listeden TextBox1'i seçin. Sağdaki açılır listeden Değiştir'i seçin.

12. Aşağıdaki kod satırını ekleyin:

Private Sub TextBox1_Change()

GetData

End Sub

13. Proje Gezgini'nde, UserForm1'e çift tıklayın.

14. Düzenle / Ekle komutuna çift tıklayın.

15. Aşağıdaki kod satırını ekleyin:

Private Sub CommandButton1_Click()

EditAdd

End Sub

16. Temizle komut düğmesine çift tıklayın.

17. Aşağıdaki kod satırını ekleyin:

Private Sub CommandButton2_Click()

ClearForm

End Sub

Açıklama: bu substa bir saniye içinde oluşturacağımız diğer subsları çağırıyoruz.

18. Kapat komutuna çift tıklayın.

19. Aşağıdaki kod satırını ekleyin:

Private Sub CommandButton3_Click()

Unload Me

End Sub

Açıklama: Bu kod satırı, Userform'u kapatır.

Subayı oluşturma zamanı. Sub hakkında daha fazla bilgi için Fonksiyon ve Alt bölümümüzü inceleyebilirsiniz. Aceleniz varsa, aşağıdaki alt bileşenleri bir modül içine yerleştirin (Visual Basic Düzenleyicisi'nde, Ekle, Modül'ü tıklatın).

20. İlk olarak, Tamsayı türünde üç değişken ve Boole tipi bir değişken bildirin. Genel Bildirimler bölümündeki değişkenleri (modülün en üstünde) belirtin. Bu sayede sadece değişkenleri bir kez bildirmeniz ve bunları birden çok alt istasyonda kullanmanız gerekir.

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

21. GetData altını ekleyin.

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

Açıklama: Kimlik metin kutusu sayısal bir değer içeriyorsa, Excel VBA kimliği arar ve karşılık gelen kaydı yükler. Metin kutularını kolayca değiştirmek için Controls Collection'u kullanıyoruz. Excel VBA kimliği bulamazsa (bayrak hala yanlıştır), ikinci ve üçüncü metin kutusunu boşaltır. Kimlik metin kutusu sayısal bir değer içermiyorsa, Excel VBA ClearForm altını çağırır.

22. ClearForm altını ekleyin.

Sub ClearForm()

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

End Sub

Açıklama: Excel VBA tüm metin kutularını temizler.

23. EditAdd altını ekleyin.

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

Açıklama: Kimlik metin kutusu boş değilse, Excel VBA, sayfanın üzerindeki kaydı düzenler (daha önce gördüğümüz gibi bir kaydın yüklenmesinin tersi). Excel VBA kimliği bulamazsa (bayrak hala yanlıştır), kayıt bir sonraki boş satıra ekler. EmptyRow değişkeni ilk boş satırdır ve her kayıt eklendiğinde artar.

24. Visual Basic Editor'den çıkın, aşağıda gösterilen etiketleri 1. satıra girin ve Userform'u test edin.

Excel VBA Etkileşimli Kullanıcı Formu

Ayrıca oku: