VBA - Kullanıcı Formları

Bir User Formbir kullanıcı veri girişini daha kontrol edilebilir ve kullanıcı için kullanımı daha kolay hale getiren özel oluşturulmuş bir iletişim kutusudur. Bu bölümde, basit bir form tasarlamayı ve excel'e veri eklemeyi öğreneceksiniz.

Step 1- Alt + F11 tuşlarına basarak VBA Penceresine gidin ve "Ekle" Menüsüne gidin ve "Kullanıcı Formu" nu seçin. Seçildikten sonra, aşağıdaki ekran görüntüsünde gösterildiği gibi kullanıcı formu görüntülenir.

Step 2 - Verilen kontrolleri kullanarak formları tasarlayın.

Step 3- Her bir kontrolü ekledikten sonra, kontrollerin adlandırılması gerekir. Başlık, formda görünene karşılık gelir ve ad, o öğe için VBA kodunu yazarken görünecek mantıksal ada karşılık gelir.

Step 4 - Eklenen kontrollerin her birinin karşısındaki isimler aşağıdadır.

Kontrol Mantıksal Ad Başlık
Nereden frmempform Çalışan Formu
Çalışan Kimlik Etiketi Kutusu empid Çalışan kimliği
ad Etiket Kutusu İsim İsim
soyadı Etiket Kutusu Soyadı Soyadı
dob Etiket Kutusu dob Doğum tarihi
mailid Etiket Kutusu posta kimliği Email kimliği
Passportholder Etiket Kutusu Pasaport sahibi Pasaport sahibi
Emp ID Metin Kutusu txtempid Uygulanamaz
Ad Metin Kutusu txtfirstname Uygulanamaz
Soyadı Metin Kutusu txtlastname Uygulanamaz
E-posta Kimliği Metin Kutusu txtemailid Uygulanamaz
Tarih Combo Box cmbdate Uygulanamaz
Ay Birleşik Giriş Kutusu cmbmonth Uygulanamaz
Yıl Açılan Kutu cmbyear Uygulanamaz
Evet Radyo Düğmesi Radyolar Evet
Radyo Düğmesi Yok radiono Hayır
Gönder Düğmesi btnsubmit Sunmak
İptal Düğmesi btncancel İptal etmek

Step 5 - Forma sağ tıklayıp 'Kodu Görüntüle'yi seçerek form yükleme olayı için kod ekleyin.

Step 6 - Nesneler açılır menüsünden "Kullanıcı formu" nu seçin ve aşağıdaki ekran görüntüsünde gösterildiği gibi "Başlat" yöntemini seçin.

Step 7 - Formu yükledikten sonra, metin kutularının temizlendiğinden, açılır kutuların doldurulduğundan ve Radyo düğmelerinin sıfırlandığından emin olun.

Private Sub UserForm_Initialize()
   'Empty Emp ID Text box and Set the Cursor 
   txtempid.Value = ""
   txtempid.SetFocus
   
   'Empty all other text box fields
   txtfirstname.Value = ""
   txtlastname.Value = ""
   txtemailid.Value = ""
   
   'Clear All Date of Birth Related Fields
   cmbdate.Clear
   cmbmonth.Clear
   cmbyear.Clear
   
   'Fill Date Drop Down box - Takes 1 to 31
   With cmbdate
      .AddItem "1"
      .AddItem "2"
      .AddItem "3"
      .AddItem "4"
      .AddItem "5"
      .AddItem "6"
      .AddItem "7"
      .AddItem "8"
      .AddItem "9"
      .AddItem "10"
      .AddItem "11"
      .AddItem "12"
      .AddItem "13"
      .AddItem "14"
      .AddItem "15"
      .AddItem "16"
      .AddItem "17"
      .AddItem "18"
      .AddItem "19"
      .AddItem "20"
      .AddItem "21"
      .AddItem "22"
      .AddItem "23"
      .AddItem "24"
      .AddItem "25"
      .AddItem "26"
      .AddItem "27"
      .AddItem "28"
      .AddItem "29"
      .AddItem "30"
      .AddItem "31"
   End With
   
   'Fill Month Drop Down box - Takes Jan to Dec
   With cmbmonth
      .AddItem "JAN"
      .AddItem "FEB"
      .AddItem "MAR"
      .AddItem "APR"
      .AddItem "MAY"
      .AddItem "JUN"
      .AddItem "JUL"
      .AddItem "AUG"
      .AddItem "SEP"
      .AddItem "OCT"
      .AddItem "NOV"
      .AddItem "DEC"
   End With
   
   'Fill Year Drop Down box - Takes 1980 to 2014
   With cmbyear
      .AddItem "1980"
      .AddItem "1981"
      .AddItem "1982"
      .AddItem "1983"
      .AddItem "1984"
      .AddItem "1985"
      .AddItem "1986"
      .AddItem "1987"
      .AddItem "1988"
      .AddItem "1989"
      .AddItem "1990"
      .AddItem "1991"
      .AddItem "1992"
      .AddItem "1993"
      .AddItem "1994"
      .AddItem "1995"
      .AddItem "1996"
      .AddItem "1997"
      .AddItem "1998"
      .AddItem "1999"
      .AddItem "2000"
      .AddItem "2001"
      .AddItem "2002"
      .AddItem "2003"
      .AddItem "2004"
      .AddItem "2005"
      .AddItem "2006"
      .AddItem "2007"
      .AddItem "2008"
      .AddItem "2009"
      .AddItem "2010"
      .AddItem "2011"
      .AddItem "2012"
      .AddItem "2013"
      .AddItem "2014"
   End With
   
   'Reset Radio Button. Set it to False when form loads.
   radioyes.Value = False
   radiono.Value = False

End Sub

Step 8- Şimdi kodu Gönder düğmesine ekleyin. Gönder düğmesine tıkladıktan sonra, kullanıcı değerleri çalışma sayfasına ekleyebilmelidir.

Private Sub btnsubmit_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 = txtempid.Value
   Cells(emptyRow, 2).Value = txtfirstname.Value
   Cells(emptyRow, 3).Value = txtlastname.Value
   Cells(emptyRow, 4).Value = cmbdate.Value & "/" & cmbmonth.Value & "/" & cmbyear.Value
   Cells(emptyRow, 5).Value = txtemailid.Value
  
   If radioyes.Value = True Then
      Cells(emptyRow, 6).Value = "Yes"
   Else
      Cells(emptyRow, 6).Value = "No"
   End If
End Sub

Step 9 - Kullanıcı İptal düğmesini tıkladığında formu kapatmak için bir yöntem ekleyin.

Private Sub btncancel_Click()
   Unload Me
End Sub

Step 10- "Çalıştır" düğmesine tıklayarak formu çalıştırın. Değerleri forma girin ve 'Gönder' düğmesini tıklayın. Değerler, aşağıdaki ekran görüntüsünde gösterildiği gibi otomatik olarak çalışma sayfasına akacaktır.