Tüm Versiyonu Göster : Personel Kayıt Programı (Resimli Anlatım)
Korhan Ayhan
01-04-2009, 22:08
Selamlar,
Arkadaşlar sizlere elimden geldiğince sıfırdan bir programın hazırlık aşamalarını görsel olarak anlatmaya çalışacağım. Amacımız başlangıç seviyesinde olan arkadaşlarımıza bir nebze olsun katkıda bulunmak. Bu tarz çalışmalarında nasıl kod yazmaları gerektiği konusunda bilgi vermektir.
Bu çalışmada neleri öğreneceğiz;
Programımızın adı ; PERSONEL_KAYIT_PROGRAMI
Sayfada buton oluşturmayı ve makro atamayı.
UserForm oluşturmayı.
UserForm üzerinde kontroller oluşturmayı. (Label, ComboBox, TextBox, ListBox, CommandButton gibi)
Oluşturduğumuz kontrollere kod yazarak excel sayfasına veri kaydetmeyi.
Veri kaydetme işlemi sırasında gerekiyorsa veriyi formatlamayı. (TL formatı, Tarih formatı gibi)
Kayıt arama, değiştirme ve silme işlemlerini.
İlk olarak programın yapımında bize kolaylık sağlayacak araç çubuklarını aktif hale getirmeliyiz. (Resim-1)
RESİM-1
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_1.JPG
Korhan Ayhan
01-04-2009, 22:32
İkinci aşamada programın alt yapısında kullanacağımız sayfaları ve tabloları oluşturacağız. (Resim-2)
RESİM-2
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_2.JPG
Korhan Ayhan
01-04-2009, 23:07
Üçüncü aşamada PARAMETRELER isimli sayfamızdaki ilgili sütunları oluşturuyoruz. Formumuz üzerinde 3 sütunu seçim yaparak kayıt işlemimizi yapabiliriz. (Resim-3)
Bunlar;
DEPARTMANI
DOĞUM_YERİ
KAN_GRUBU
RESİM-3
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_3.JPG
Korhan Ayhan
01-04-2009, 23:16
Dördüncü aşamada ALT+F11 tuşlarına basarak yada Araçlar-Makro-Visual Basic Düzenleyicisi menüsünden kod editörünü açıyoruz. (Resim-4)
RESİM-4
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_4.JPG
Korhan Ayhan
02-04-2009, 19:29
Beşinci aşamada kod editörü bölümünde programımızı yapılandırmak için 2 adet UserForm ve 1 adet Modul ekliyoruz. (Resim-5)
RESİM-5
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_5.JPG
Korhan Ayhan
02-04-2009, 19:42
Altıncı aşamada veri kaydı yapacağımız UserFormları isimlendiriyoruz. (Resim-6 / Resim-7)
RESİM-6
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_6.JPG
RESİM-7
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_7.JPG
Korhan Ayhan
02-04-2009, 20:12
Yedinci aşamada sayfa üzerine kayıt formuna kolayca ulaşabilmek için bir adet Düğme ekliyoruz. (Resim-8)
RESİM-8
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_8.JPG
Korhan Ayhan
02-04-2009, 21:07
Sekizinci aşamada eklediğimiz düğme ile userformu açabilmek için kod editörünü açıyoruz. Sol bölümden Module1 bölümüne çift tıklıyoruz ve açılan kod penceresinze ilk makromuzu yazıyoruz. (Resim-9)
Uygulanan kodun açıklamaları;
Option Explicit
Sub KAYIT_FORMU_AÇ()
KAYIT_FORMU.Show
End Sub
1-Satır (Option Explicit)
Bu komut kodlarımızı yazarken kullanacağımız değişken ve sabitleri tanımlamamızı zorunlu kılar. Mesela "Satır" adında bir değişken kullanacaksak ve bu değişken sayısal değerler alacaksa "Dim Satır As Long" olarak tanımlamalıyız. Burada kullanılan "Long" deyimi Satır isimli değişkenin alabileceği en büyük sayısal değeri ifade eder. Farklı olarak (Byte, Integer, Long, Single, Double) kullanılabilir.
2-Satır (Sub KAYIT_FORMU_AÇ())
Bu satırda makromuza isim veriyoruz. Makrolarımıza sayısal değerle başlayan bir isim veremeyiz. Ayrıca makro isimlerimiz boşluk içermemelidir. Yoksa hata mesajı alırsınız.
3-Satır (KAYIT_FORMU.Show)
Bu satırda daha önce KAYIT_FORMU adıyla tanımladığımız userformu ekrana çağırıyoruz. Burada kullanılan "Show" deyimi adındanda anlaşılacağı gibi formu ekrana çağırmaktadır.
4-Satır (End Sub)
Bu satır ile makromuzu sonlandırıyoruz.
RESİM-9
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_9.JPG
Korhan Ayhan
02-04-2009, 21:20
Dokuzuncu aşamada yazmış olduğumuz kodu sayfaya eklemiş olduğumuz düğmeye tanımlıyoruz. (Resim-10)
RESİM-10
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_10.JPG
Korhan Ayhan
03-04-2009, 20:08
Onuncu aşamada UserFormumuzun üzerine ekleyeceğimiz kontroller için Toolbox araç çubuğunu aktif hale getirmeliyiz. (Resim-11)
Eğer Toolboxı görüntüleyemiyorsanız (Resim-12) deki yolları takip edin.
RESİM-11
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_11.JPG
Program yapımında kullanacağımız bu nesneler hakkında kısa bilgiler vermek istiyorum.
LABEL - Bu nesne etiket olarak kullanılmaktadır. Genelde nesnelerin sol tarafına yada üst kısmına eklenerek o nesneye hangi verinin girileceğini bildirir.
TEXTBOX - Bu nesne veri girişi amacıyla kullanılmaktadır. Adındanda analaşılacağı gibi metin kutusudur. Fakat biçimlendirme yapılarak sayısal verilerin girişinde de kullanılabilir.
COMBOBOX - Bu nesne ile hazır liste halindeki veriler listelenir. Kullanıcıya seçim yaptırarak veri girişinde kolaylık sağlayabiliriz. Nesnenin sağ kısmında aşağı doğru ok bulunmaktadır. Tıkladığınızda yüklemiş olduğunuz veri listesine ulaşabilirsiniz.
LISTBOX - Bu nesne ile excel sayfasına kayıt ettiğiniz verileri listeleyip görüntüleyebilirsiniz.
COMMANDBUTTON - Bu nesne komut düğmesidir. Vereceğimiz komutlara göre işlem yapmaktadır. Mesela veri kayıt işleminde, kayıt silme işleminde, kayıt değiştirme işleminde, raporlama işleminde yada sizlerin belirleyeceği değişik görevler için kullanılabilir.
STATUSBAR - Bu nesne bir nevi bilgi çubuğudur. Excelin "Durum Çubuğu" özelliklerine sahiptir. Kişisel bilgiler girebileceğimiz gibi yerleşik görevlerde tanımalayabiliriz. (Date , Capslock , Numlock , Insert , Time gibi)
RESİM-12
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_12.JPG
Korhan Ayhan
03-04-2009, 20:43
Onbirinci aşamada eğer gerekiyorsa Toolbox üzerinde olmayan fakat kullanmamız gereken nesneler varsa bunları oluşturuyoruz. (Resim-13)
Toolbox üzerinde sağ klik yaptıktan sonra "Additional Controls" seçeneğini seçin. Daha sonra açılan menüden (Resim-14) deki seçeneği aktif hale getirin. "Statusbar" nesnesinin Toolboxa eklendiğini göreceksiniz.
RESİM-13
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_13.JPG
RESİM-14
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_14.JPG
Korhan Ayhan
03-04-2009, 21:31
Onikinci aşamada KAYIT_FORMU isimli formumuza kullanacağımız nesneleri ekliyoruz. (Resim-15)
RESİM-15
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_15.JPG
Korhan Ayhan
03-04-2009, 21:59
Onüçüncü aşamada DEPARTMAN_TANIMLAMA isimli formumuza kullanacağımız nesneleri ekliyoruz. (Resim-16)
RESİM-16
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_16.JPG
Korhan Ayhan
03-04-2009, 22:07
Evet arkadaşlar farkındaysanız UserForm üstüne eklediğimiz nesneleri boyutlandırma dışında biçimlendirmedik. Bundan sonraki aşamada UserForm açılışında bu nesneleri dilediğimiz gibi biçimlendirerek görsellik kazandıracağız.
Bu aşamaya kadar hazırlamış olduğumuz dosyayı yapamayan arkadaşlarımız olabilir düşüncesi ile ekliyorum.
Kemal Demir
04-04-2009, 08:13
Korhan Hocam,
Anlatım ,tek kelimeyle süper olmuş.
Korhan Ayhan
06-04-2009, 20:04
Ondördüncü aşamada UserFormumuzun kod bölümünü açarak kod yazmaya başlayacağız. (Resim-17)
RESİM-17
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_17.JPG
Korhan Ayhan
06-04-2009, 20:32
Onbeşinci aşamada UserFormumuz açılırken form üzerindeki bazı nesneleri ve formun kendisini biçimlendireceğiz. (Resim-18)
RESİM-18
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_18.JPG
Korhan Ayhan
06-04-2009, 21:17
Onaltıncı aşamada UserFormumuz açılırken çalışmasını istediğimiz kodları derleyeceğiz. Bu aşamada size bazı önemli bilgiler vermek istiyorum.
Program yapımında kullandığımız kodları derlerken bazı terimler ve döngüler kullanırız. Bunlar kod yazımının temellerini oluşturmaktadır. Bu tür bir işe girişen bir kişi eğer bu konulara hakim değilse belkide bir-iki satır kod ile halledeceği işlemi onlarca satır kod yazarak halledecektir. Ayrıca kod yazarken excelin yerleşik işlevlerinide kod penceresinde kullanabiliriz. Formüllerin çalışma prensiplerini bilmekte size birçok yerde avantaj sağlayacaktır.
Tanımlamalar;
Genel olarak "Dim" deyimi ile yapılırlar. Kullanılacak değişkenin tipini ve alacağı maksimum değeri belirterek hafızada gereksiz alan kaplamasını önlemiş oluruz.
Mesela bir döngü kuracağız ve bu döngü ile satırlara veri girişi yapmak istediğimizi düşünün. Döngü isimlerimizi verirken yapılacak işlemi belirten kısa isimler verirsek daha sonra kodları okurken bizlere kolaylık sağlayacaktır. Döngümüze "Satır" ismini verelim. Bu durumda aşağıdaki yapıda bir kod yazacaktık.
For Satır = 2 To 100
...
Next
Kodda verilen 2-100 değerleri Satır değişkeninin alacağı başlangıç ve bitiş değerlerini ifade etmektedir. İşte eğer biz bu kodu yazmadan önce "Dim" deyimi ile "Satır" isimli değişkeni tanımlamazsak döngümüz çalışabilir fakat hafızada gereksiz alan kaplar. Tanımlamadığımız her değişken "Variant" değerini alarak hafızada gereksiz yer kaplar.
Kodumuzu aşağıdaki şekilde düzenleyerek doğru bir şekilde tamamlıyoruz.
Dim Satır As Byte
For Satır = 2 To 100
...
Next
Yukarıda kullanılan "Byte" deyimi Satır değişkeninin alacağı maksimum değeri ifade etmektedir. Bizler tanımlamalar yaparken farklı deyimler kullanacağız. Bunları kavramanız için aşağıda vermiş olduğum linki mutlaka inceleyiniz.
DEĞİŞKENLER - VARIABLES (http://www.excel.web.tr/showthread.php?t=4299)
Korhan Ayhan
07-04-2009, 22:22
Onyedinci aşamada "KAYIT_FORMU" isimli UserFormumuzu ekrana çağırırken çalışacak kodları derleyeceğiz. Bu kodları derlerken hangi kodun ne anlama geldiğini elimden geldiğince satır satır sizlere açıklayacağım.
Userform açılırken kullanıcıya kolaylık sağlaması açısından bazı nesnelere (ComboBox, ListBox gibi) verileri otomatik olarak yüklemek gerekir. Kullanıcı bu nesnelerden seçim yaparak veri girişlerini tamamlayarak kayıt işlemini gerçekleştirmeye çalışır.
Bu tür kodlar genel olarak aşağıdaki kod bloğuna yazılarak derlenir.
Option Explicit
Private Sub UserForm_Initialize()
'UserForm açılırken çalışmasını istediğimiz kodları bu bölüme yazıyoruz.
End Sub
Evet arkadaşlar bu bilgilerden sonra Userformumuzun açılışında derleyeceğimiz kodları adım adım derlemeye başlayalım.
Daha öncede belirttiğim gibi KAYIT_FORMU adlı UserFormumuza ekledeğimiz nesneleri biçimlendirmemiştik. İlk işimiz bu nesneleri biçimlendirerek UserFormumuza görsellik kazandıracağız.
İlk olarak Labellerimizi biçimlendireceğiz. Aşağıdaki kodu KAYIT_FORMU adlı UserFormumuzun kod bölümüne yazıyoruz. Eğer kodu nereye yazacağınızı hatırlayamadıysanız bir önceki mesajdaki (Resim-18) size fikir verecektir.
Option Explicit
Private Sub UserForm_Initialize()
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
End Sub
Bu kodu uyguladıktan sonra sonra F5 tuşuna basarak UserFormu ekrana çağırın.
Hepiniz aşağıdaki hata mesajını alacaksınız.
Compile error:
Variable not defined
Bu hatayı şu sebepten dolayı aldık. Kod yazarken bazı değişkenler kullandık. Burada kullandığımız değişkenler kod editöründe önceden tanımlı olmadığı için excel bunu tanıyamadı ve hataya sebep oldu.
Bu hatayı ilk satırda bulunan "Option Explicit" satırını silerek engelleyebilirdik. Bu ifade ne kadar cansıkıcı gibi görünsede aslında ileri aşamalarda sizlere büyük faydalar sağlayacaktır.
Kodu aşağıdaki şekilde düzenleyip F5 tuşuna basarak Userformu ekrana çağırın. Hata mesajı almadığınızı göreceksiniz.
Option Explicit
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
End Sub
Birinci kodun açıklamaları;
Bu bölümdeki kodlar Sn. Haluk beyin daha önce cevapladığı bir başlıktan alıntıdır. Sadece anlamanız açısından ifadeler Türkçeleştirilmiştir.
Bu kod bloğunda kullanacağımız her değişken için içinde Dim ile başlayan tanımlamaları yazmalıyız.
Sizlerde kırmızı renkle belirttiğim bölüme aşağıdaki tanımlamaları ekleyiniz.
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
1-Satır (Sistem_Genişlik = Application.Width - 8)
Bu satırda "Sistem_Genişlik" adlı değişkene açık olan excel uygulamasının (Application) genişliğini (Width) tanımlıyoruz.
-8 ifadesi ile UserFormumuzun kenarlık bölümlerini görünür hale getiriyoruz. Benim ekran ayarlarından dolayı bu eklemeyi yaptım. Sizde UserFormun görüntüsünde bir sıkıntı yoksa -8 ifadesini silebilirsiniz. Yada bu değeri arttırarak ne işe yaradığını gözlemleyebilirsiniz.
2-Satır (Sistem_Yükseklik = Application.Height - 8)
Bu satırda "Sistem_Yükseklik" adlı değişkene açık olan excel uygulamasının (Application) yüksekliğini (Height) tanımlıyoruz.
-8 ifadesi ile UserFormumuzun kenarlık bölümlerini görünür hale getiriyoruz. Benim ekran ayarlarından dolayı bu eklemeyi yaptım. Sizde UserFormun görüntüsünde bir sıkıntı yoksa -8 ifadesini silebilirsiniz. Yada bu değeri arttırarak ne işe yaradığını gözlemleyebilirsiniz.
3-Satır (Form_Genişlik = KAYIT_FORMU.Width)
Bu satırda "Form_Genişlik" adlı değişkene KAYIT_FORMU adlı UserFormumuzun genişliğini (Width) tanımlıyoruz.
Bu değişkeni KAYIT_FORMU adlı UserFormumuzun üzerindeki diğer nesneleri orantılı olarak biçimlendirmek amacı ile kullanacağız.
4-Satır (Form_Yükseklik = KAYIT_FORMU.Height)
Bu satırda "Form_Yükseklik" adlı değişkene KAYIT_FORMU adlı UserFormumuzun yüksekliğiniz (Height) tanımlıyoruz.
Bu değişkeni KAYIT_FORMU adlı UserFormumuzun üzerindeki diğer nesneleri orantılı olarak biçimlendirmek amacı ile kullanacağız.
5-Satır (Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik)
Bu satırda "Genişlik_Oranı" adlı değişkene KAYIT_FORMU adlı UserFormumuzun genişliği ile excel uygulamasının genişliğini oranlıyarak tanımlıyoruz.
Bu değişkeni KAYIT_FORMU adlı UserFormumuzun üzerindeki diğer nesneleri orantılı olarak biçimlendirmek amacı ile kullanacağız.
6-Satır (Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik)
Bu satırda "Yükseklik_Oranı" adlı değişkene KAYIT_FORMU adlı UserFormumuzun yüksekliği ile excel uygulamasının yüksekliğini oranlıyarak tanımlıyoruz.
Bu değişkeni KAYIT_FORMU adlı UserFormumuzun üzerindeki diğer nesneleri orantılı olarak biçimlendirmek amacı ile kullanacağız.
7-Satır (KAYIT_FORMU.Width = Sistem_Genişlik)
Bu satırda KAYIT_FORMU adlı UserFormumuzun genişliğini Sistem_Genişliği adlı değişkene tanımladığımız değere eşitliyoruz.
8-Satır (KAYIT_FORMU.Width = Sistem_Yükseklik)
Bu satırda KAYIT_FORMU adlı UserFormumuzun yüksekliğini Sistem_Yükseliği adlı değişkene tanımladığımız değere eşitliyoruz.
9-Satır (For Each Nesne In KAYIT_FORMU.Controls)
Bu satırda KAYIT_FORMU adlı UserFormumuzun üzerindeki nesneleri (Controls) Nesne isimli döngüye alıyoruz.
For Each Eleman In Grup
Yukarıdaki ifade şeklinde yorumlanır.
"Eleman" olarak tanımladığımız birim "Grup" olarak tanımlayacağımız kümenin bir elemanıdır. (Sn. Mahmut beyden alıntıdır.)
10-Satır (Nesne.Top = Nesne.Top * Yükseklik_Oranı)
Bu satırda nesnelerin KAYIT_FORMU adlı UserFormumuzun üst-tepe (Top) kısmına olan uzaklıklarını ayarlıyoruz. Nesnelerin kendi üst-tepe değeri ile Daha önce oranlıyarak bulduğumuz "Yükseklik_Oranı" isimli değişkeni çarparak orantılama yapıyoruz. Bu şekilde nesneler UserFormumuzun yükselik ve genişliği ile doğru orantılı olarak biçimlenmesini sağlıyoruz.
11-Satır (Nesne.Left = Nesne.Left * Genişlik_Oranı)
Bu satırda nesnelerin KAYIT_FORMU adlı UserFormumuzun sol (Left) kısmına olan uzaklıklarını ayarlıyoruz. Nesnelerin kendi sol değeri ile Daha önce oranlıyarak bulduğumuz "Genişlik_Oranı" isimli değişkeni çarparak orantılama yapıyoruz. Bu şekilde nesneler UserFormumuzun yükselik ve genişliği ile doğru orantılı olarak biçimlenmesini sağlıyoruz.
12-Satır (Nesne.Width = Nesne.Width * Genişlik_Oranı)
Bu satırda nesnelerin kendi genişlik (Width) değeri ile daha önce oranlıyarak bulduğumuz "Genişlik_Oranı" isimli değişkeni çarparak orantılama yapıyoruz. Bu şekilde nesneler UserFormumuzun yükselik ve genişliği ile doğru orantılı olarak biçimlenmesini sağlıyoruz.
13-Satır (Nesne.Height = Nesne.Height * Yükseklik_Oranı)
Bu satırda nesnelerin kendi yükseklik (Height) değeri ile daha önce oranlıyarak bulduğumuz "Yükseklik_Oranı" isimli değişkeni çarparak orantılama yapıyoruz. Bu şekilde nesneler UserFormumuzun yükselik ve genişliği ile doğru orantılı olarak biçimlenmesini sağlıyoruz.
14-Satır (On Error Resume Next)
Bu satır kodlar çalışırken hata oluşması durumunda hatanın gözardı edilmesini sağlamaktadır. Bu satır ne kadar işimize yarar gibi görünsede kullanırken çok dikkatli davranmalıyız. Özellikle hesapla işlemleri yapan dögülerimizde bu ifadeyi kullanmak yerine hataya sebep verebilecek durumları tesbit edip buna göre önlemler almak daha faydalı olacaktır.
15-Satır (Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1)
Bu satırda nesnelerin yazı font boyutunu (Size) daha önce oranlıyarak bulduğumuz "Yükseklik_Oranı" isimli değişkeni çarparak orantılama yapıyoruz. Bu şekilde nesneler UserFormumuzun yükselik ve genişliği ile doğru orantılı olarak biçimlenmesini sağlıyoruz. "Yükseklik_Oranı" isimli değişkeninden -1 yapmamızın sebebi nesnelerin yazı boyutunun çok fazla büyümesini önlemek içindir. Siz bu değeri değiştirerek ne işe yaradığını gözlemleyebilirsiniz.
16-Satır (On Error Goto 0)
Bu satır On Error Resume Next ifadesinin etkisini sıfırlamak amacıyla kullanılmıştır. UserFormumuzun kod bölümüne 6. bölümdeki kod bloğundan sonra başka kodlar ekleyeceksek ve ekleyeceğimiz kodlar hataya sebep olacak kodlarsa "On Error Resume Next" ifadesini kullandığımız için bu hataları görme şansımız olmayacaktı. İşte bu hataları görebilmek adına "On Error Goto 0" ifadesini kullanmaktayız.
17-Satır (Next)
For Each Nesne döngüsüne devam ediyoruz.
18-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
07-04-2009, 22:47
Onsekizinci aşamada KAYIT_FORMU isimli UserFormumuza ikinci kodumuzu yazıyoruz.
Option Explicit
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
End Sub
İkinci kodun açıklamaları;
1-Satır (Dim X As Byte)
Bu satırda "X" isimli değişkenin alabileceği maksimum değeri belirliyoruz. Bir önceki mesajımda değişkenlerle ilgili vermiş olduğum linki dikkatlice incelediyseniz azda olsa fikir sahibi olmuşsunuzdur.
Kısaca açıklamak gerekirse "Byte" ifadesi en küçük sayısal aralığı ifade eden tanımlamadır. 0-255 arası değerleri destekler.
2-Satır (For X = 2 To 10)
Bu satırda "X" adında bir döngü başlatıyoruz. "X" döngüsünün başlangıç değeri 2, bitiş değeride 10 olarak belirtilmiştir. Kullanmış olduğumuz 2 değeri "B" sütununu, 10 değeride "J" sütununu ifade etmektedir. Döngümüz çalıştığında "X" aşağıdaki değerleri alacaktır.
2 = "B"
3 = "C"
4 = "D"
5 = "E"
6 = "F"
7 = "G"
8 = "H"
9 = "I"
10 = "J"
3-Satır (With KAYIT_FORMU)
Bu satırı KAYIT_FORMU üzerindeki Labelleri kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
"With" ifadesi "End With" ifadesi ile birlikte kullanılır. With ifadesinin yanına yazılan nesneyle ilgili işlemleri kısaltarak yazmamızı sağlayarak kod yazarken tasarruf etmemize olanak verir. Aşağıdaki şekilde kullanılır.
With Nesne
'Nesneye ait işlemler
End With
4-Satır (.Controls("Label" & X - 1).Caption = Cells(1, X))
Bu satırda Labellerin başlıklarını (Caption) hücrelerden alıyoruz.
"Controls" ifadesi form üzerindeki nesneleri kolayca tanımlamamızı sağlamaktadır. UserForm üzerine Label nesnesi eklediğimizde ismi "Label1" şeklinde oluşmaktadır. Kırmızı renkli sayısal verileri "X" döngüsüne alarak tüm Labelleri kolaylıkla biçimlendiriyoruz.
Dikkat ederseniz "X" değerini hem Labellerin yanındaki sayısal değerler için hemde Cells(1, X) ifadesinde sütunu belirtmek için kullandık.
Labellerin sayısal değerleri 1 den başlarken sütun indeximiz 2 den başlamaktadır. Döngümüz başladığında X=2 olduğundan aşağıdaki eşitlik ortaya çıkacaktır.
LabelX = Cells(1, X) ifadesinde X yerine sayısal değeri yerleştirdiğimizde aşağıdaki ifade oluşacaktır.
Label2 = Cells(1, 2)
Fakat bu eşitlik doğru bir eşitlik değildir. Aslında bu ifade aşağıdaki şekilde olmalıydı.
Label1 = Cells(1, 2)
Bu ifadeyi sayfadaki değere göre yorumlarsak aşağıdaki sonuç ortaya çıkacaktır.
Label1 = "DEPARTMANI"
Döngümüzün başlangıcında X=2 olduğundan bu değeri 1 eksilterek doğru eşitliği sağlıyoruz. Bu şekilde UserForm üzerindeki Labellere doğru sütunlardaki değerler gelecektir.
4. kod satırında kullanılan Cells ifadesi sayfa hücrelerini ifade etmektedir. Yazım şekli aşağıdaki gibidir.
Cells(Satır_Değeri, Sütun_Değeri)
Ek bilgi : Aynı zamanda "Range" ifadeside sayfa hücrelerini ifade etmektedir.
5-Satır (.Controls("Label" & X - 1).Font.Bold = True)
Bu satırda Labellerin yazı fontunu bold (koyu) yapıyoruz.
6-Satır (.Controls("Label" & X - 1).ForeColor = vbBlue)
Bu satırda Labellerin yazı font rengini mavi yapıyoruz.
7-Satır (End With)
With ifadesini sonlandırıyoruz.
8-Satır (Next)
X döngüsüne devam ediyoruz.
9-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
11-04-2009, 19:52
Ondokuzuncu aşamada KAYIT_FORMU isimli UserFormumuza üçüncü kodumuzu yazıyoruz.
Option Explicit
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
'3 - Label10 nesnesini döngü haricinde tutarak biçimlendiriyoruz. Sitemizin adını ve program yazarının adını yazıyoruz.
With KAYIT_FORMU.Label10
.Caption = "www.excel.web.tr (http://www.excel.web.tr) - Korhan AYHAN - 2009 ®"
.ControlTipText = "Bize ulaşmak için lütfen tıklayınız..."
.Font.Bold = True
.Font.Size = 12
.ForeColor = vbBlue
End With
End Sub
Üçüncü kodun açıklamaları;
1-Satır (With KAYIT_FORMU.Label10)
Bu satırı KAYIT_FORMU üzerindeki Label10 nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.Caption = "www.excel.web.tr (http://www.excel.web.tr/) - Korhan AYHAN - 2009 ®")
Label10 nesnesinin Caption (Başlık) değerini "www.excel.web.tr (http://www.excel.web.tr/) - Korhan AYHAN - 2009 ®" olarak tanımlıyoruz.
3-Satır (.ControlTipText = "Bize ulaşmak için lütfen tıklayınız...")
Label10 nesnesinin üzerine mouse ile geldiğinizde bir bilgi mesajı çıkmasını sağlıyoruz.
4-Satır (.Font.Bold = True)
Label10 nesnesinin yazı fontunu bold (kalın) yapıyoruz.
5-Satır (.Font.Size = 12)
Label10 nesnesinin yazı font büyüklüğünü 12 punto olarak ayarlıyoruz.
6-Satır (.ForeColor = vbBlue)
Label10 nesnesinin yazı font rengini mavi olarak ayarlıyoruz.
7-Satır (End With)
With ifadesini sonlandırıyoruz.
Korhan Ayhan
11-04-2009, 23:31
Yirminci aşamada KAYIT_FORMU isimli UserFormumuza dördüncü-beşinci kodlarımızı yazıyoruz.
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
'3 - Label10 nesnesini döngü haricinde tutarak biçimlendiriyoruz. Sitemizin adını ve program yazarının adını yazıyoruz.
With KAYIT_FORMU.Label10
.Caption = "www.excel.web.tr (http://www.excel.web.tr) - Korhan AYHAN - 2009 ®"
.ControlTipText = "Bize ulaşmak için lütfen tıklayınız..."
.Font.Bold = True
.Font.Size = 12
.ForeColor = vbBlue
End With
'4 - Butonlara vereceğimiz isimleri diziye alıyoruz.
Buton_Adı = Array("KAYDET", "KAYIT DEĞİŞTİR", "KAYIT SİL", "ÇIKIŞ", "DEPARTMAN TANIMLAMA")
'5 - Diziyi döngüye alarak butonları isimlendirip biçimlendiriyoruz.
For X = 1 To UBound(Buton_Adı())
With KAYIT_FORMU
.Controls("CommandButton" & X).Caption = Buton_Adı(X)
.Controls("CommandButton" & X).Font.Size = 12
.Controls("CommandButton" & X).Font.Bold = True
.Controls("CommandButton" & X).ForeColor = vbRed
End With
Next
End Sub
Dördüncü kodun açıklamaları;
1-Satır (Buton_Adı = Array("KAYDET", "KAYIT DEĞİŞTİR", "KAYIT SİL", "ÇIKIŞ", "DEPARTMAN TANIMLAMA"))
Bu satırı KAYIT_FORMU üzerindeki CommandButton nesnelerine isim vermek amacıyla oluşturuyoruz. "Array" komutu ile verilerimizi diziye alarak kolaylıkla döngü içinde kullanabiliriz.
Beşinci kodun açıklamaları;
1-Satır (For X = 1 To UBound(Buton_Adı()))
Bu satırda "X" adında bir döngü başlatıyoruz. "X" döngüsünün başlangıç değeri 1, bitiş değeride "Buton_Adı" adlı diziye aldığımız veri sayısıdır.
"Array" ifadesi ile diziye alınmış verilerin sayısını "Ubound" ifadesi ile öğreniyoruz. Array ile diziye alınan veriler aşağıdaki dizilimi oluştururlar.
Buton_Adı = Array(0, 1, 2, 3, 4)
Dikkat ettiyseniz dizimizin ilk değeri (0) sıfır indeksine sahiptir. Eğer kodlarımızın ilk satırı olan "Option Explicit" ifadesi altında yazdığımız "Option Base 1" ifadesini kullanmasaydık döngü başlangıcını aşağıdaki şekilde yazmamız gerekecekti.
For X = 0 To UBound(Buton_Adı())
"Option Base 1" ifadesini kullanarak döngümüzü 1 değeri ile başlatmayı sağlıyoruz.
2-Satır (With KAYIT_FORMU)
Bu satırı KAYIT_FORMU üzerindeki CommandButtonları kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
3-Satır (.Controls("CommandButton" & X).Caption = Buton_Adı(X))
Bu satır ile KAYIT_FORMU üzerindeki CommandButtonların başlık (Caption) değerlerini oluşturduğumuz diziden döngü ile alıyoruz.
4-Satır (.Controls("CommandButton" & X).Font.Size = 12)
Bu satır ile KAYIT_FORMU üzerindeki CommandButtonların yazı font boyutunu (Size) 12 olarak ayarlıyoruz.
5- Satır (.Controls("CommandButton" & X).Font.Bold = True)
Bu satır ile KAYIT_FORMU üzerindeki CommandButtonların yazı fontunu koyu (Bold) olarak ayarlıyoruz.
6- Satır (.Controls("CommandButton" & X).ForeColor = vbRed)
Bu satır ile KAYIT_FORMU üzerindeki CommandButtonların yazı font rengini (ForeColor) kırmızı olarak ayarlıyoruz.
7-Satır (End With)
With ifadesini sonlandırıyoruz.
8-Satır (Next)
X döngüsüne devam ediyoruz.
9-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
11-04-2009, 23:35
Yirmibirinci aşamada KAYIT_FORMU isimli UserFormumuza altıncı kodumuzu yazıyoruz.
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
'3 - Label10 nesnesini döngü haricinde tutarak biçimlendiriyoruz. Sitemizin adını ve program yazarının adını yazıyoruz.
With KAYIT_FORMU.Label10
.Caption = "www.excel.web.tr (http://www.excel.web.tr) - Korhan AYHAN - 2009 ®"
.ControlTipText = "Bize ulaşmak için lütfen tıklayınız..."
.Font.Bold = True
.Font.Size = 12
.ForeColor = vbBlue
End With
'4 - Butonlara vereceğimiz isimleri diziye alıyoruz.
Buton_Adı = Array("KAYDET", "KAYIT DEĞİŞTİR", "KAYIT SİL", "ÇIKIŞ", "DEPARTMAN TANIMLAMA")
'5 - Diziyi döngüye alarak butonları isimlendirip biçimlendiriyoruz.
For X = 1 To UBound(Buton_Adı())
With KAYIT_FORMU
.Controls("CommandButton" & X).Caption = Buton_Adı(X)
.Controls("CommandButton" & X).Font.Size = 12
.Controls("CommandButton" & X).Font.Bold = True
.Controls("CommandButton" & X).ForeColor = vbRed
End With
Next
'6 - ComboBoxlara PARAMETRELER sayfasındaki verileri yüklüyoruz.
KAYIT_FORMU.ComboBox1.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row
KAYIT_FORMU.ComboBox2.RowSource = "PARAMETRELER!B2:B" & [PARAMETRELER!B65536].End(3).Row
KAYIT_FORMU.ComboBox3.RowSource = "PARAMETRELER!C2:C" & [PARAMETRELER!C65536].End(3).Row
End Sub
Altıncı kodun açıklamaları;
1-Satır (KAYIT_FORMU.ComboBox1.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row)
Bu satırda ComboBox1 (DEPARTMANI) açılır kutusuna PARAMETRELER adlı sayfanın A sütunundaki verileri yüklüyoruz. Burada kullanılan [PARAMETRELER!A65536].End(3).Row ifadesi PARAMETRELER sayfasının A sütunundaki en son dolu hücrenin satır numarasını bulmak amacı ile kullanılmıştır. Sırasıyla aşağıdaki işlemleri yaparak kodun mantığını anlayabilirsiniz.
PARAMETRELER sayfasında A65536 hücresini seçin.
End tuşuna basın. Ardından yukarı ok tuşuna basın. Aktif hücrenin A sütunundaki en son dolu hücre olduğunu göreceksiniz.
İşte yapmış olduğumuz bu işlemin kod karşılığı [PARAMETRELER!A65536].End(3).Row ifadesidir. Bu ifadeyi aşağıdaki şekillerde de yazabiliriz.
Sheets("PARAMETRELER").Range("A65536").End(3).Row
Sheets("PARAMETRELER").Cells(65536, 1).End(3).Row
Sheets("PARAMETRELER").Cells(65536, "A").End(3).Row
2-Satır (KAYIT_FORMU.ComboBox2.RowSource = "PARAMETRELER!B2:B" & [PARAMETRELER!B65536].End(3).Row)
Bu satırda ComboBox2 (DOĞUM_YERİ) açılır kutusuna PARAMETRELER adlı sayfanın B sütunundaki verileri yüklüyoruz.
3-Satır (KAYIT_FORMU.ComboBox3.RowSource = "PARAMETRELER!C2:C" & [PARAMETRELER!C65536].End(3).Row)
Bu satırda ComboBox3 (KAN_GRUBU) açılır kutusuna PARAMETRELER adlı sayfanın C sütunundaki verileri yüklüyoruz.
Korhan Ayhan
12-04-2009, 17:04
Yirmiikinci aşamada KAYIT_FORMU isimli UserFormumuza yedinci kodumuzu yazıyoruz.
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
'3 - Label10 nesnesini döngü haricinde tutarak biçimlendiriyoruz. Sitemizin adını ve program yazarının adını yazıyoruz.
With KAYIT_FORMU.Label10
.Caption = "www.excel.web.tr (http://www.excel.web.tr) - Korhan AYHAN - 2009 ®"
.ControlTipText = "Bize ulaşmak için lütfen tıklayınız..."
.Font.Bold = True
.Font.Size = 12
.ForeColor = vbBlue
End With
'4 - Butonlara vereceğimiz isimleri diziye alıyoruz.
Buton_Adı = Array("KAYDET", "KAYIT DEĞİŞTİR", "KAYIT SİL", "ÇIKIŞ", "DEPARTMAN TANIMLAMA")
'5 - Diziyi döngüye alarak butonları isimlendirip biçimlendiriyoruz.
For X = 1 To UBound(Buton_Adı())
With KAYIT_FORMU
.Controls("CommandButton" & X).Caption = Buton_Adı(X)
.Controls("CommandButton" & X).Font.Size = 12
.Controls("CommandButton" & X).Font.Bold = True
.Controls("CommandButton" & X).ForeColor = vbRed
End With
Next
'6 - ComboBoxlara PARAMETRELER sayfasındaki verileri yüklüyoruz.
KAYIT_FORMU.ComboBox1.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row
KAYIT_FORMU.ComboBox2.RowSource = "PARAMETRELER!B2:B" & [PARAMETRELER!B65536].End(3).Row
KAYIT_FORMU.ComboBox3.RowSource = "PARAMETRELER!C2:C" & [PARAMETRELER!C65536].End(3).Row
'7 - StatusBar1 üzerinde sayfanın ilk satırını başlık olarak görüntülüyoruz ve sütun genişliklerini ayarlıyoruz.
For X = 1 To 9
With KAYIT_FORMU.StatusBar1
.Panels.Add
.Panels(X) = Cells(1, X + 1)
.Panels(X).Alignment = sbrCenter
End With
Next
With KAYIT_FORMU.StatusBar1
.Panels(1).MinWidth = 100
.Panels(2).MinWidth = 100
.Panels(3).MinWidth = 100
.Panels(4).MinWidth = 100
.Panels(5).MinWidth = 100
.Panels(6).MinWidth = 100
.Panels(7).MinWidth = 100
.Panels(8).MinWidth = 120
.Panels(9).MinWidth = 100
End With
End Sub
Yedinci kodun açıklamaları;
1-Satır (For X = 1 To 9)
Bu satırda "X" adında bir döngü başlatıyoruz. "X" döngüsünün başlangıç değeri 1, bitiş değeride 9 olarak belirtilmiştir.
2-Satır (With KAYIT_FORMU.StatusBar1)
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
3-Satır (.Panels.Add)
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesine boş bir pencere (Panels) ekliyoruz.
4-Satır (.Panels(X) = Cells(1, X + 1))
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesine eklediğimiz pencereye ilk satırdaki başlık değerlerini yüklüyoruz.
Burada X+1 dememizin sebebi "X" isimli döngümüzü 1 den başlatmamızdır. Bizim sütun başlıklarımız "B" sütunundan başladığı için (SIRA_NO başlığını UserForm üzerinde kullanmayacağımız için) +1 yaparak doğru sütun eşleştirmesini yapmış oluyoruz.
5-Satır (.Panels(X).Alignment = sbrCenter)
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesine eklediğimiz pencereye yüklediğimiz veriyi görsel olarak ortalattırıyoruz.
6-Satır (End With)
With ifadesini sonlandırıyoruz.
7-Satır (Next)
X döngüsüne devam ediyoruz.
8-Satır (With KAYIT_FORMU.StatusBar1)
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
9-Satır (.Panels(1).MinWidth = 100)
Bu satırı KAYIT_FORMU üzerindeki StatusBar nesnesini eklediğimiz pencerelerin genişliklerini (MinWidth) ayarlıyoruz.
10-17. satırlar arasıda aynı açıklama geçerlidir.
18-Satır (End With)
With ifadesini sonlandırıyoruz.
19-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
12-04-2009, 22:19
Yirmiüçüncü aşamada KAYIT_FORMU isimli UserFormumuza sekizinci kodumuzu yazıyoruz.
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
Dim Sistem_Genişlik As Long, Sistem_Yükseklik As Long
Dim Form_Genişlik As Long, Form_Yükseklik As Long
Dim Genişlik_Oranı As Double, Yükseklik_Oranı As Double
Dim Nesne As Control
'1 - UserFormu sistem ekran ayarlarına göre ekranı kaplayacak şekilde açılması için gerekli genişlik ve yükseklik ayarlarını yapıyoruz.
Sistem_Genişlik = Application.Width - 8
Sistem_Yükseklik = Application.Height - 8
Form_Genişlik = KAYIT_FORMU.Width
Form_Yükseklik = KAYIT_FORMU.Height
Genişlik_Oranı = Sistem_Genişlik / Form_Genişlik
Yükseklik_Oranı = Sistem_Yükseklik / Form_Yükseklik
KAYIT_FORMU.Width = Sistem_Genişlik
KAYIT_FORMU.Height = Sistem_Yükseklik
For Each Nesne In KAYIT_FORMU.Controls
Nesne.Top = Nesne.Top * Yükseklik_Oranı
Nesne.Left = Nesne.Left * Genişlik_Oranı
Nesne.Width = Nesne.Width * Genişlik_Oranı
Nesne.Height = Nesne.Height * Yükseklik_Oranı
On Error Resume Next
Nesne.Font.Size = Nesne.Font.Size * Yükseklik_Oranı - 1
On Error GoTo 0
Next
'2 - Bu döngümüzle Labellerin Caption değerlerini ilk satırdan (B-J sütunlarından) alarak UserForma yüklüyoruz.
'Döngümüzün adını X olarak tanımladık.
For X = 2 To 10
With KAYIT_FORMU
.Controls("Label" & X - 1).Caption = Cells(1, X)
.Controls("Label" & X - 1).Font.Bold = True
.Controls("Label" & X - 1).ForeColor = vbBlue
End With
Next
'3 - Label10 nesnesini döngü haricinde tutarak biçimlendiriyoruz. Sitemizin adını ve program yazarının adını yazıyoruz.
With KAYIT_FORMU.Label10
.Caption = "www.excel.web.tr (http://www.excel.web.tr) - Korhan AYHAN - 2009 ®"
.ControlTipText = "Bize ulaşmak için lütfen tıklayınız..."
.Font.Bold = True
.Font.Size = 12
.ForeColor = vbBlue
End With
'4 - Butonlara vereceğimiz isimleri diziye alıyoruz.
Buton_Adı = Array("KAYDET", "KAYIT DEĞİŞTİR", "KAYIT SİL", "ÇIKIŞ", "DEPARTMAN TANIMLAMA")
'5 - Diziyi döngüye alarak butonları isimlendirip biçimlendiriyoruz.
For X = 1 To UBound(Buton_Adı())
With KAYIT_FORMU
.Controls("CommandButton" & X).Caption = Buton_Adı(X)
.Controls("CommandButton" & X).Font.Size = 12
.Controls("CommandButton" & X).Font.Bold = True
.Controls("CommandButton" & X).ForeColor = vbRed
End With
Next
'6 - ComboBoxlara PARAMETRELER sayfasındaki verileri yüklüyoruz.
KAYIT_FORMU.ComboBox1.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row
KAYIT_FORMU.ComboBox2.RowSource = "PARAMETRELER!B2:B" & [PARAMETRELER!B65536].End(3).Row
KAYIT_FORMU.ComboBox3.RowSource = "PARAMETRELER!C2:C" & [PARAMETRELER!C65536].End(3).Row
'7 - StatusBar1 üzerinde sayfanın ilk satırını başlık olarak görüntülüyoruz ve sütun genişliklerini ayarlıyoruz.
For X = 1 To 9
With KAYIT_FORMU.StatusBar1
.Panels.Add
.Panels(X) = Cells(1, X + 1)
.Panels(X).Alignment = sbrCenter
End With
Next
With KAYIT_FORMU.StatusBar1
.Panels(1).MinWidth = 100
.Panels(2).MinWidth = 100
.Panels(3).MinWidth = 100
.Panels(4).MinWidth = 100
.Panels(5).MinWidth = 100
.Panels(6).MinWidth = 100
.Panels(7).MinWidth = 100
.Panels(8).MinWidth = 120
.Panels(9).MinWidth = 100
End With
'8 - ListBox1 nesnesini biçimlendirip sayfadaki kayıtları yüklüyoruz.
With KAYIT_FORMU.ListBox1
.BackColor = vbYellow
.ColumnCount = 9
.ColumnWidths = "100;100;100;100;100;100;100;120;100"
.ForeColor = vbRed
If Sheets("VERİ").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row
End If
End With
End Sub
Sekizinci kodun açıklamaları;
1-Satır (With KAYIT_FORMU.ListBox1)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
3-Satır (.ColumnCount = 9)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesinin sütun (Column) sayısını 9 olarak ayarlıyoruz.
4-Satır (.ColumnWidths = "100;100;100;100;100;100;100;120;100")
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesinin sütun genişliklerini ayarlıyoruz.
5-Satır (.ForeColor = vbRed)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesine yükleyeceğimiz verilerin yazı font rengini kırmızı olarak ayarlıyoruz.
6-Satır (If Sheets("VERİ").Range("A2") = Empty Then)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesine yükleyeceğimiz verilerin sayfasında veri olup olmadığını sorguluyoruz. Eğer ilgili sayfanın A2 hücresi boşsa henüz veri girişi yapılmadığı anlamına gelmektedir.
7-Satır (.RowSource = Empty)
Bu satırı 6 satırdaki koşul gerçekleşirse KAYIT_FORMU üzerindeki ListBox nesnesine veri yüklememek için kullanıyoruz. RowSource ifadesi veri kaynağı anlamına gelmektedir.
8-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Aşağıdaki yapıda kullanılır.
If Koşul Then
Koşul sağlanıyorsa yapılacak işlemler
Else
Koşul sağlanmıyorsa yapılacak işlemler
End If
9-Satır (.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row)
Bu satırı 6 satırdaki koşul gerçekleştiğinde ListBox nesnesine VERİ isimli sayfadaki kayıtlı B-J sütunlarındaki verileri yüklemek için kullanıyoruz.
10-Satır (End If)
If sorgusunu sonlandırıyoruz.
11-Satır (End With)
With ifadesini sonlandırıyoruz.
12-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
12-04-2009, 22:19
Arkadaşlar,
Bu aşamaya kadar anlattığım kodların numaralarında değişiklik yapmak zorunda kaldım. Bu sebeple mesajları yeniden düzenledim.
6 numaralı kod 1 numaralı kodun yerine geçmiştir. Diğer kodlarda buna göre yer değiştirmiştir.
Bu düzeltme şu sebeple yapılmıştır. Userformu ekran genişliğine göre ayarlayan kodlardan sonra ListBox nesnesini biçimlendirdiğim için problem oluştu. Mecburen 6 numaralı kodu ilk sıraya almak zorunda kaldım.
Ayrıca bu mesajdan önceki iki mesaja 7-8. kodların açıklaması eklenmiştir.
Bu değişiklikten dolayı sizlerden özür dilerim. Umarım anlayışla karşılarsınız.
Bu aşamaya kadar oluşturduğumuz dosyayı ekten indirebilirsiniz.
Korhan Ayhan
12-04-2009, 23:39
Yirmidördüncü aşamada KAYIT_FORMU isimli UserFormumuz üzerindeki CommandButtonlara gerekli kodları yazarak işlemlerimizi gerçekleştireceğiz. (Resim-19 / Resim-20)
RESİM-19
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_19.JPG
RESİM-20
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_20.JPG
Korhan Ayhan
13-04-2009, 22:14
Yirmibeşinci aşamada KAYIT_FORMU isimli UserFormumuz "KAYDET" isimli butonumuza kayıt ekleme kodlarını yazıyoruz. Bu kodu RESİM-20 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip kayıt yapmayı deneyiniz.
Private Sub CommandButton1_Click() 'KAYDET TUŞU (Yeni veri girişi için kullanılmaktadır.)
Dim Satır As Long, Say As Byte
Satır = Range("A65536").End(3).Row + 1
'1 - Doğru veri tabanı oluşturmak için kullanıcının tüm verileri girmesi gerekmektedir.
'Aşağıdaki sorgularla personele ait tüm bilgilerin girilmesini zorunlu kılıyoruz.
If ComboBox1.Text = "" Then
MsgBox "Lütfen -DEPARTMAN- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
ComboBox1.SetFocus
Exit Sub
End If
If TextBox1.Text = "" Then
MsgBox "Lütfen -ADI SOYADI- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox1.SetFocus
Exit Sub
End If
If TextBox2.Text = "" Then
MsgBox "Lütfen -TC KİMLİK NO- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox2.SetFocus
Exit Sub
End If
If TextBox3.Text = "" Then
MsgBox "Lütfen -SSK NO- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox3.SetFocus
Exit Sub
End If
If TextBox4.Text = "" Then
MsgBox "Lütfen -DOĞUM TARİHİ- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox4.SetFocus
Exit Sub
End If
If ComboBox2.Text = "" Then
MsgBox "Lütfen -DOĞUM YERİ- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
ComboBox2.SetFocus
Exit Sub
End If
If ComboBox3.Text = "" Then
MsgBox "Lütfen -KAN GRUBU- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
ComboBox3.SetFocus
Exit Sub
End If
If TextBox5.Text = "" Then
MsgBox "Lütfen -ADRES- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox5.SetFocus
Exit Sub
End If
If TextBox6.Text = "" Then
MsgBox "Lütfen -TELEFON NO- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox6.SetFocus
Exit Sub
End If
'2 - TC Kimlik No sorgulaması yaparak mükerrer kayıt girişlerini engelliyoruz.
Say = WorksheetFunction.CountIf(Range("D2:D65536"), TextBox2.Text)
If Say > 0 Then
MsgBox "Bu kayıt daha önce girilmiştir !" & vbNewLine & _
"Lütfen girdiğiniz bilgileri kontrol ediniz.", vbCritical, "Mükerrer Kayıt"
Exit Sub
End If
'3 - Kayıt işlemi için gerekli bilgileri ilgili hücrelere aktarıyoruz.
Cells(Satır, "A") = Satır - 1
Cells(Satır, "B") = ComboBox1.Text
Cells(Satır, "C") = TextBox1.Text
Cells(Satır, "D").NumberFormat = "@"
Cells(Satır, "D") = TextBox2.Text
Cells(Satır, "E").NumberFormat = "@"
Cells(Satır, "E") = TextBox3.Text
Cells(Satır, "F") = Format(TextBox4.Text, "dd.mm.yyyy")
Cells(Satır, "G") = ComboBox2.Text
Cells(Satır, "H") = ComboBox3.Text
Cells(Satır, "I") = TextBox5.Text
Cells(Satır, "J").NumberFormat = "(0###) ### ## ##"
Cells(Satır, "J") = TextBox6.Text
'4 - Kayıt işleminden sonra verileri ListBox1 nesnesine aktarıyoruz.
With KAYIT_FORMU.ListBox1
.BackColor = vbYellow
.ColumnCount = 9
.ColumnWidths = "100;100;100;100;100;100;100;120;100"
.ForeColor = vbRed
If Sheets("VERİ").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row
End If
End With
MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation, "Kayıt İşlemi"
End Sub
Kayıt işlemi kod açıklamaları;
Kayıt işlemi sırasında kullanacağımız değişkenleri aşağıdaki satır ile tanımlıyoruz.
Dim Satır As Long, Say As Byte
Gördüğünüz gibi iki adet değişken kullandık. Birisi Satır, bir diğeride Say adlı değikendir.
Satır değişkenini kayıt eklerken kullanacağız. Yeni verilerimizi tablomuzun en son dolu satırının bir altına (yani ilk boş satıra) kayıt edeceğiz.
İlk boş satırı bulma yöntemi olarak End(3).Row ifadesini kullanacağız. Bu ifadeyi #23 nolu mesajda açıklamıştık.
Kısaca hatırlatmak gerekirse;
VERİ sayfasında A65536 hücresini seçin. End tuşuna ardındanda yukarı ok tuşuna basın. Aktif hücrenin A sütunundaki en son dolu hücre olduğunu göreceksiniz.
Fakat bize ilk boş satırın numarası gerektiği için +1 ekleyerek satır numarasını tesbit ediyoruz. Ve bu ifadeyide aşağıdaki şekilde Satır isimli değişkene eşitliyoruz.
Satır = Range("A65536").End(3).Row + 1
Birinci kodun açıklamaları;
1-Satır (If ComboBox1.Text = "" Then)
Bu satır ile KAYIT_FORMU üzerindeki ComboBox1 nesnesinin boş olup olmadığını sorguluyoruz. Eğer boş ise kullanıcıya bu nesneye ait hangi bilgiyi girmesi gerekiyorsa uyarı mesajı vererek bu bilgiyi girmesini amaçlıyoruz.
2-Satır (MsgBox "Lütfen -DEPARTMAN- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi")
1. satırdaki koşul sağlandığı için kullanıcıya gerekli bilgiyi girdirmeyi amaçlayan uyarı mesajı veriyoruz.
3-Satır (ComboBox1.SetFocus)
Bu satır ile ilgili nesneyi seçiyoruz. SetFocus ifadesi nesneye fokuslanmayı sağlar. Yani o nesne seçili hale gelir. Bu şekilde veri girişi için kullanıcıyı zorlar.
4-Satır (Exit Sub)
Bu satır ile Sub yordamından çıkıyoruz. Bu ifade şu anlama gelmektedir. Kullanıcı eksik bilgi girişi yaptığı için kayıt işlemi eksik kalmıştır. Eğer Sub yordamından çıkmazsak kayıt işlemi eksik bilgi ile tamamlanacaktı. Bunu önlemek adına bu ifadeyi kullanıyoruz.
5-Satır (End If)
1. satırdaki If sorgumuzu sonlandırıyoruz.
Hatırlatma;
If ile başlayan her sorgulama End If ifadesi ile sonlandırılmalıdır.
If Koşulumuz Then
'Yapılacak işlemler
End If
Bu bölümden sonraki diğer kodlar, yani 2 nolu kod bloğuna kadar olan kısım içinde yukarıdaki açıklamalar geçerlidir. Zaten incelediğinizde aynı ifadelerin kullanıldığını gözlemleyeceksiniz.
İkinci kodun açıklamaları;
1-Satır (Say = WorksheetFunction.CountIf(Range("D2: D65536"), TextBox2.Text))
Bu satır ile yeni kayıt işleminde girilen TC Kimlik No verisini D sütununda sayıyoruz. Sayılan değeri Say isimli değişkene eşitliyoruz.
Gördüğünüz gibi "WorksheetFunction" ifadesi kullanılmıştır. Bu ifade ile excel sayfasında kullanmış olduğumuz yerleşik formülleri kod bölümündede kullanabiliyoruz. Bu ifadeyi yazdıktan sonra tek nokta (.) yazdığınızda fonksiyonların listesi açılacaktır. Siz işinize yarayan diğer fonksiyonlarıda kullanabilirsiniz.
CountIf = Eğersay (Fonksiyonların Türkçe-İngilizce karşılıklarına dersane bölümünde ulaşabilirsiniz.)
2-Satır (If Say > 0 Then)
Bu satır ile Say değişkeninin aldığı değer sorguluyoruz. Eğer bu değer sıfırdan büyükse TC Kimlik No mükerrer (çift) girilmek isteniyor anlamındadır.
3-4-Satırlar (MsgBox "Bu kayıt daha önce girilmiştir !" & vbNewLine & _
"Lütfen girdiğiniz bilgileri kontrol ediniz.", vbCritical, "Mükerrer Kayıt")
Bu satırlar ile kullanıcıyı girmek istediği kaydın mükerrer olduğu uyarısını vererek bilgilendiriyoruz.
5-Satır (Exit Sub)
Bu satır ile Sub yordamını sonlandırıyoruz. Kayıt mükerrer olduğu için işlemi sonlandırmamız gerekiyor.
6-Satır (End If)
2. satırdaki If sorgumuzu sonlandırıyoruz.
Üçüncü kodun açıklamaları;
1-Satır (Cells(Satır, "A") = Satır - 1)
Daha önce ilk boş satır numarasını eşitlediğimiz "Satır" isimli değişkeni kullanarak "A" sütununa sıra numarasını yazdırıyoruz.
-1 ifadesi ile doğru sıra numarasını tesbit ediyoruz. İlk kayıt satır numaramız aslında ikinci satırdır. "Satır" isimli değişkenimizde ilk aşamada bu değeri alacaktır. Fakat biz ilk kayıdımıza sıra numarası olarak "1" değerini vermeliyiz ki doğru bir sıra numarası oluşturalım. İşte burada kullanlan -1 ifadesi bu işe yaramaktadır.
2-Satır (Cells(Satır, "B") = ComboBox1.Text)
"B" sütununa "DEPARTMAN" bilgisini yazdırıyoruz.
3-Satır (Cells(Satır, "C") = TextBox1.Text)
"C" sütununa "ADI SOYADI" bilgisini yazdırıyoruz.
4-Satır (Cells(Satır, "D").NumberFormat = "@")
"D" sütunundaki ilk boş hücrenin biçimini "Metin" olarak ayarlıyoruz.
5-Satır (Cells(Satır, "D") = TextBox2.Text)
"D" sütununa "TC KİMLİK NO" bilgisini yazdırıyoruz.
6-Satır (Cells(Satır, "E").NumberFormat = "@")
"E" sütunundaki ilk boş hücrenin biçimini "Metin" olarak ayarlıyoruz.
7-Satır (Cells(Satır, "E") = TextBox3.Text)
"E" sütununa "SSK NO" bilgisini yazdırıyoruz.
8-Satır (Cells(Satır, "F") = Format(TextBox4.Text, "dd.mm.yyyy"))
"F" sütununa "DOĞUM TARİHİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
Gördüğünüz gibi "FORMAT" ifadesi kullanımıştır. Bu ifadeyi kullanarak UserForm üzerinden excel sayfasına kayıt edeceğimiz bilgileri biçimlendirerek aktarabiliriz. Tıpkı "Hücre Biçimlendirme" menüsünde kullandığımız özellikler gibi bu ifadeyide kod editöründe kullanarak verilerimizi biçimlendirme imkanına sahibiz.
Aşağıdaki şekilde yorumlanmaktadır.
Format(Formatlanacak Veri , Format Şekli)
9-Satır (Cells(Satır, "G") = ComboBox2.Text)
"G" sütununa "DOĞUM YERİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
10-Satır (Cells(Satır, "H") = ComboBox3.Text)
"H" sütununa "KAN GRUBU" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
11-Satır (Cells(Satır, "I") = TextBox5.Text)
"I" sütununa "ADRESİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
12-Satır (Cells(Satır, "J").NumberFormat = "(0###) ### ## ##")
"J" sütunundaki ilk boş hücrenin biçimini "Telefon Numarası" olarak ayarlıyoruz.
13-Satır (Cells(Satır, "J") = TextBox6.Text)
"J" sütununa "TELEFON NO" bilgisini yazdırıyoruz.
Dördüncü kodun açıklamaları;
1-Satır (With KAYIT_FORMU.ListBox1)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
3-Satır (.ColumnCount = 9)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütun sayısını 9 olarak ayarlıyoruz.
4-Satır (.ColumnWidths = "100;100;100;100;100;100;100;120;100")
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütunlarının genişlik ayarını yapıyoruz.
5-Satır (.ForeColor = vbRed)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesine aktarılacak verilerin yazı rengini kırmızı olarak ayarlıyoruz.
6-Satır (If Sheets("VERİ").Range("A2") = Empty Then)
Bu satır ile sayfada veri olup olmadığını sorguluyoruz. Eğer sayfadaki "A2" hücresi boş ise henüz veri girişi yapmadığımız anlamına gelmektedir.
7-Satır (.RowSource = Empty)
6. satırdaki sorgumuzun sonucu olumlu ise (yani sayfada veri yoksa) ListBox nesnesine herhangi bir veri aktarmamızın anlamı olmayacağından ListBox nesnesinin satır kaynağını boş olarak ayarlıyoruz.
8-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Burada (Sayfada veri varsa) anlamını taşımaktadır.
9-Satır (.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row)
Bu satırı 6 satırdaki koşulun aksi gerçekleştiğinde ListBox nesnesine VERİ isimli sayfadaki kayıtlı B-J sütunlarındaki verileri yüklemek için kullanıyoruz.
10-Satır (End If)
If sorgusunu sonlandırıyoruz.
11-Satır (End With)
With ifadesini sonlandırıyoruz.
12-Satır (MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation, "Kayıt İşlemi")
Bu satır ile kayıt işleminin tamamlandığına dair kullanıcıya bilgilendirme mesajı veriyoruz.
13-Satır (End Sub)
Bu satır ile Private Sub CommandButton1_Click() olayını sonlandırıyoruz.
Korhan Ayhan
20-04-2009, 21:05
Yirmialtıncı aşamada KAYIT_FORMU isimli UserFormumuzda kayıt değiştirme işleminde kullanmak amacıyla ListBox nesnesinin kayıt seçim olayına ait kod bloğunu açıyoruz. (Resim-21 / Resim-22)
RESİM-21
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_21.JPG
RESİM-22
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_22.JPG
Korhan Ayhan
20-04-2009, 21:31
Yirmiyedinci aşamada KAYIT_FORMU isimli UserFormumuzda kayıt değiştme işleminde kullanmak amacıyla ListBox1_Click() olayına ait kayıt seçim kodlarını yazıyoruz. Bu kodu RESİM-22 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip daha önce eklemiş olduğunuz bir kaydı ListBox1 üzerinden seçmeyi deneyiniz.
Private Sub ListBox1_Click() 'KAYIT SEÇİM BÖLÜMÜ (Üzerinde değişiklik yapılacak kaydı seçmek amacıyla kullanılmaktadır.)
'1 - Kayıt düzeltme işlemi için verileri UserForm üzerindeki nesnelere yüklüyoruz.
Cells(ListBox1.ListIndex + 2, 1).Select
ComboBox1.Text = Cells(ActiveCell.Row, "B")
TextBox1.Text = Cells(ActiveCell.Row, "C")
TextBox2.Text = Cells(ActiveCell.Row, "D")
TextBox3.Text = Cells(ActiveCell.Row, "E")
TextBox4.Text = Cells(ActiveCell.Row, "F")
ComboBox2.Text = Cells(ActiveCell.Row, "G")
ComboBox3.Text = Cells(ActiveCell.Row, "H")
TextBox5.Text = Cells(ActiveCell.Row, "I")
TextBox6.Text = Cells(ActiveCell.Row, "J")
End Sub
Kayıt seçim işlemi kod açıklamaları;
Birinci kodun açıklamaları;
1-Satır (Cells(ListBox1.ListIndex + 2, 1).Select)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinden seçilen kayıda ait satırın A sütunundaki hücresini seçiyoruz.
ListIndex ifadesi ile ListBox1 nesnesi üzerinde seçim yaptığımız satırın index numarasını elde edebiliyoruz. ListBox1 nesnesinin ilk satırını seçtiğinizde ListIndex ifadesi 0 (sıfır) değerini döndürür. Fakat bizim sayfa üzerindeki ilk kaydımız 2. satırda bulunmaktadır. Bu durumda satır eşitlemesi yapmak için ListIndex değerine +2 ekleyerek doğru satır numarasına ulaşıyoruz.
2-Satır (ComboBox1.Text = Cells(ActiveCell.Row, "B"))
ComboBox1 nesnesine aktif satırın "B" sütunundaki "DEPARTMAN" bilgisini yüklüyoruz.
3-Satır (TextBox1.Text = Cells(ActiveCell.Row, "C"))
TextBox1 nesnesine aktif satırın "C" sütunundaki "ADI SOYADI" bilgisini yüklüyoruz.
4-Satır (TextBox2.Text = Cells(ActiveCell.Row, "D"))
TextBox2 nesnesine aktif satırın "D" sütunundaki "TC KİMLİK NO" bilgisini yüklüyoruz.
5-Satır (TextBox3.Text = Cells(ActiveCell.Row, "E"))
TextBox3 nesnesine aktif satırın "E" sütunundaki "SSK NO" bilgisini yüklüyoruz.
6-Satır (TextBox4.Text = Cells(ActiveCell.Row, "F"))
TextBox4 nesnesine aktif satırın "F" sütunundaki "DOĞUM TARİHİ" bilgisini yüklüyoruz.
7-Satır (ComboBox2.Text = Cells(ActiveCell.Row, "G"))
ComboBox2 nesnesine aktif satırın "G" sütunundaki "DOĞUM YERİ" bilgisini yüklüyoruz.
8-Satır (ComboBox3.Text = Cells(ActiveCell.Row, "H"))
ComboBox3 nesnesine aktif satırın "H" sütunundaki "KAN GRUBU" bilgisini yüklüyoruz.
9-Satır (TextBox5.Text = Cells(ActiveCell.Row, "I"))
TextBox5 nesnesine aktif satırın "I" sütunundaki "ADRESİ" bilgisini yüklüyoruz.
10-Satır (TextBox6.Text = Cells(ActiveCell.Row, "J"))
TextBox6 nesnesine aktif satırın "J" sütunundaki "TELEFON NO" bilgisini yüklüyoruz.
11-Satır (End Sub)
Bu satır ile Private Sub ListBox1_Click() olayını sonlandırıyoruz.
Korhan Ayhan
20-04-2009, 22:25
Yirmisekizinci aşamada KAYIT_FORMU isimli UserFormumuzda "KAYIT DEĞİŞTİR" isimli butonumuza ait kod bloğunu açıyoruz. (Resim-23 / Resim-24)
RESİM-23
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_23.JPG
RESİM-24
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_24.JPG
Korhan Ayhan
20-04-2009, 23:10
Yirmidokuzuncu aşamada KAYIT_FORMU isimli UserFormumuz "KAYIT DEĞİŞTİR" isimli butonumuza kayıt değiştirme kodlarını yazıyoruz. Bu kodu RESİM-24 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip daha önce eklemiş olduğunuz bir kaydı düzeltmeyi deneyiniz.
Private Sub CommandButton2_Click() 'KAYIT DEĞİŞTİR TUŞU (ListBox üzerinde seçilen kayıtla ilgili değişiklik yapmak için kullanılmaktadır.)
'1 - ListBox nesnesinde veri olup olmadığını kontrol ediyoruz.
If ListBox1 = Empty Then
MsgBox "Veri kaydı bulunamamıştır.", vbExclamation, "Dikkat !"
Exit Sub
End If
'2 - ListBox nesnesinden seçim yapılıp yapılmadığını kontrol ediyoruz.
If ListBox1.ListIndex < 0 Then
MsgBox "Lütfen listeden veri seçimi yapınız.", vbExclamation, "Dikkat !"
Exit Sub
End If
'3 - Yapılacak değişiklik işlemi için kullanıcıdan onay alıyoruz.
If MsgBox("Seçtiğiniz kayıt üzerinde değişiklik yapılacaktır onaylıyor musunuz ?", vbCritical + vbYesNo, "Dikkat !") = vbYes Then
'4 - ListBox nesnesinde kayıtları temizliyoruz.
ListBox1.RowSource = Empty
'5 - Eğer kullanıcı değişiklik işlemi için onay vermişse verileri ilgili hücrelere aktarıyoruz.
Cells(ActiveCell.Row, "B") = ComboBox1.Text
Cells(ActiveCell.Row, "C") = TextBox1.Text
Cells(ActiveCell.Row, "D").NumberFormat = "@"
Cells(ActiveCell.Row, "D") = TextBox2.Text
Cells(ActiveCell.Row, "E").NumberFormat = "@"
Cells(ActiveCell.Row, "E") = TextBox3.Text
Cells(ActiveCell.Row, "F") = Format(TextBox4.Text, "dd.mm.yyyy")
Cells(ActiveCell.Row, "G") = ComboBox2.Text
Cells(ActiveCell.Row, "H") = ComboBox3.Text
Cells(ActiveCell.Row, "I") = TextBox5.Text
Cells(ActiveCell.Row, "J").NumberFormat = "(0###) ### ## ##"
Cells(ActiveCell.Row, "J") = TextBox6.Text
'6 - VERİ sayfasındaki verileri ListBox nesnesine yüklüyoruz.
With KAYIT_FORMU.ListBox1
.BackColor = vbYellow
.ColumnCount = 9
.ColumnWidths = "100;100;100;100;100;100;100;120;100"
.ForeColor = vbRed
If Sheets("VERİ").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row
End If
End With
MsgBox "Kayıt düzeltme işlemi tamamlanmıştır.", vbInformation, "Kayıt Düzeltme İşlemi"
Else
MsgBox "Kayıt düzeltme işlemi iptal edilmiştir.", vbInformation, "İşlem İptali"
End If
End Sub
Kayıt düzeltme işlemi kod açıklamaları;
Birinci kodun açıklamaları;
1-Satır (If ListBox1 = Empty Then)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinin boş olup olmadığını sorguluyoruz. Eğer boş ise kullanıcıya bu nesneye ait hangi bilgiyi girmesi gerekiyorsa uyarı mesajı vererek bu bilgiyi girmesini amaçlıyoruz.
2-Satır (MsgBox "Veri kaydı bulunamamıştır.", vbExclamation, "Dikkat !")
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinin boş olduğunu ve henüz hiç veri girişi yapılmadığı konusunda kullanıcıya bilgilendirme mesajı veriyoruz.
3-Satır (Exit Sub)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesi boş olduğu için işlemi sonlandırıyoruz.
4-Satır (End If)
If sorgusunu sonlandırıyoruz.
İkinci kodun açıklamaları;
1-Satır (If ListBox1.ListIndex < 0 Then)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinden seçim yapılıp yapılmadığını sorguluyoruz.
ListIndex ifadesi ile ListBox1 nesnesi üzerinde seçim yaptığımız satırın index numarasını elde edebiliyoruz. ListBox1 nesnesinin ilk satırını seçtiğinizde ListIndex ifadesi 0 (sıfır) değerini döndürür. Eğer siz daha seçim yapmadan "KAYIT DEĞİŞTİR" butonuna tıklarsanız. ListIndex değeri "< 0" olacaktır.
2-Satır (MsgBox "Lütfen listeden veri seçimi yapınız.", vbExclamation, "Dikkat !")
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinden seçim yapılmadığı için kullanıcıya bilgilendirme mesajı veriyoruz.
3-Satır (Exit Sub)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesi boş olduğu için işlemi sonlandırıyoruz.
4-Satır (End If)
If sorgusunu sonlandırıyoruz.
Üçüncü kodun açıklamaları;
1-Satır (If MsgBox("Seçtiğiniz kayıt üzerinde değişiklik yapılacaktır onaylıyor musunuz ?", vbCritical + vbYesNo, "Dikkat !") = vbYes Then)
Bu satır ile kayıt üzerinde yapılacak değişiklik için kullanıcıdan onay alıyoruz.
Dördüncü kodun açıklamaları;
1-Satır (ListBox1.RowSource = Empty)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesindeki verileri temizliyoruz. Bunu şu amaçla kullanıyoruz. ListBox nesnesi kaynağındaki veriye erişime izin vermez. Siz bu nesne üzerinden bir kayıt seçip değiştir dediğinizde direk olarak satır kaynağına erişmeye çalışacağınız için hata oluşacaktır. Bu hatanın oluşmaması için ListBox nesnesine yüklediğimiz verileri temizliyoruz.
Beşinci kodun açıklamaları;
1-Satır (Cells(ActiveCell.Row, "B") = ComboBox1.Text)
Aktif satırın "B" sütununa "DEPARTMAN" bilgisini yazdırıyoruz.
2-Satır (Cells(ActiveCell.Row, "C") = TextBox1.Text)
Aktif satırın "C" sütununa "ADI SOYADI" bilgisini yazdırıyoruz.
3-Satır (Cells(ActiveCell.Row, "D").NumberFormat = "@")
Aktif satırın "D" sütunundaki hücrenin biçimini "Metin" olarak ayarlıyoruz.
4-Satır (Cells(ActiveCell.Row, "D") = TextBox2.Text)
Aktif satırın "D" sütununa "TC KİMLİK NO" bilgisini yazdırıyoruz.
5-Satır (Cells(ActiveCell.Row, "E").NumberFormat = "@")
Aktif satırın "E" sütunundaki hücrenin biçimini "Metin" olarak ayarlıyoruz.
6-Satır (Cells(ActiveCell.Row, "E") = TextBox3.Text)
Aktif satırın "E" sütununa "SSK NO" bilgisini yazdırıyoruz.
7-Satır (Cells(ActiveCell.Row, "F") = Format(TextBox4.Text, "dd.mm.yyyy"))
Aktif satırın "F" sütununa "DOĞUM TARİHİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
Gördüğünüz gibi "FORMAT" ifadesi kullanımıştır. Bu ifadeyi kullanarak UserForm üzerinden excel sayfasına kayıt edeceğimiz bilgileri biçimlendirerek aktarabiliriz. Tıpkı "Hücre Biçimlendirme" menüsünde kullandığımız özellikler gibi bu ifadeyide kod editöründe kullanarak verilerimizi biçimlendirme imkanına sahibiz.
Aşağıdaki şekilde yorumlanmaktadır.
Format(Formatlanacak Veri , Format Şekli)
8-Satır (Cells(ActiveCell.Row, "G") = ComboBox2.Text)
Aktif satırın "G" sütununa "DOĞUM YERİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
9-Satır (Cells(ActiveCell.Row, "H") = ComboBox3.Text)
Aktif satırın "H" sütununa "KAN GRUBU" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
10-Satır (Cells(ActiveCell.Row, "I") = TextBox5.Text)
Aktif satırın "I" sütununa "ADRESİ" bilgisini tarih biçiminde formatlayarak yazdırıyoruz.
11-Satır (Cells(ActiveCell.Row, "J").NumberFormat = "(0###) ### ## ##")
Aktif satırın "J" sütunundaki hücrenin biçimini "Telefon Numarası" olarak ayarlıyoruz.
12-Satır (Cells(ActiveCell.Row, "J") = TextBox6.Text)
Aktif satırın "J" sütununa "TELEFON NO" bilgisini yazdırıyoruz.
Altıncı kodun açıklamaları;
1-Satır (With KAYIT_FORMU.ListBox1)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
3-Satır (.ColumnCount = 9)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütun sayısını 9 olarak ayarlıyoruz.
4-Satır (.ColumnWidths = "100;100;100;100;100;100;100;120;100")
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütunlarının genişlik ayarını yapıyoruz.
5-Satır (.ForeColor = vbRed)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesine aktarılacak verilerin yazı rengini kırmızı olarak ayarlıyoruz.
6-Satır (If Sheets("VERİ").Range("A2") = Empty Then)
Bu satır ile sayfada veri olup olmadığını sorguluyoruz. Eğer sayfadaki "A2" hücresi boş ise henüz veri girişi yapmadığımız anlamına gelmektedir.
7-Satır (.RowSource = Empty)
6. satırdaki sorgumuzun sonucu olumlu ise (yani sayfada veri yoksa) ListBox nesnesine herhangi bir veri aktarmamızın anlamı olmayacağından ListBox nesnesinin satır kaynağını boş olarak ayarlıyoruz.
8-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Burada (Sayfada veri varsa) anlamını taşımaktadır.
9-Satır (.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row)
Bu satırı 6 satırdaki koşulun aksi gerçekleştiğinde ListBox nesnesine VERİ isimli sayfadaki kayıtlı B-J sütunlarındaki verileri yüklemek için kullanıyoruz.
10-Satır (End If)
If sorgusunu sonlandırıyoruz.
11-Satır (End With)
With ifadesini sonlandırıyoruz.
12-Satır (MsgBox "Kayıt düzeltme işlemi tamamlanmıştır.", vbInformation, "Kayıt Düzeltme İşlemi")
Bu satır ile kayıt düzeltme işleminin tamamlandığına dair kullanıcıya bilgilendirme mesajı veriyoruz.
13-Satır (Else)
Bu satır 3 nolu kod bloğundaki onaylama sorusuna kullanıcının "Hayır" cevabı verdiği anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Aşağıdaki yapıda kullanılır.
If Koşul Then
Koşul sağlanıyorsa yapılacak işlemler
Else
Koşul sağlanmıyorsa yapılacak işlemler
End If
14-Satır (MsgBox "Kayıt düzeltme işlemi iptal edilmiştir.", vbInformation, "İşlem İptali")
Bu satır ile kayıt düzeltme işleminin iptal edildiğine dair kullanıcıya bilgilendirme mesajı veriyoruz.
15-Satır (End If)
If sorgusunu sonlandırıyoruz.
16-Satır (End Sub)
Bu satır ile Private Sub CommandButton2_Click() olayını sonlandırıyoruz.
Korhan Ayhan
26-04-2009, 22:27
Bu aşamaya kadar hazırlamış olduğumuz dosyayı ekten indirebilirsiniz.
Korhan Ayhan
26-04-2009, 22:49
Otuzuncu aşamada KAYIT_FORMU isimli UserFormumuzda "KAYIT SİL" isimli butonumuza ait kod bloğunu açıyoruz. (Resim-25 / Resim-26)
RESİM-25
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_25.JPG
RESİM-26
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_26.JPG
Korhan Ayhan
26-04-2009, 23:16
Otuzbirinci aşamada KAYIT_FORMU isimli UserFormumuz "KAYIT SİL" isimli butonumuza kayıt silme kodlarını yazıyoruz. Bu kodu RESİM-26 da açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip daha önce eklemiş olduğunuz bir kaydı silmeyi deneyiniz.
Private Sub CommandButton3_Click() 'KAYIT SİL TUŞU (ListBox üzerinde seçilen kayıdı silmek için kullanılmaktadır.)
'1 - ListBox nesnesinde veri olup olmadığını kontrol ediyoruz.
If ListBox1 = Empty Then
MsgBox "Veri kaydı bulunamamıştır.", vbExclamation, "Dikkat !"
Exit Sub
End If
'2 - ListBox nesnesinden seçim yapılıp yapılmadığını kontrol ediyoruz.
If ListBox1.ListIndex < 0 Then
MsgBox "Lütfen listeden veri seçimi yapınız.", vbExclamation, "Dikkat !"
Exit Sub
End If
'3 - Yapılacak silme işlemi için kullanıcıdan onay alıyoruz.
If MsgBox("Seçtiğiniz kayıt silinecektir onaylıyor musunuz ?", vbCritical + vbYesNo, "Dikkat !") = vbYes Then
'4 - ListBox nesnesinde kayıtları temizliyoruz.
ListBox1.RowSource = Empty
'5 - Eğer kullanıcı silme işlemi için onay vermişse aktif satırdaki verileri siliyoruz.
Range("A" & ActiveCell.Row, "J" & ActiveCell.Row).ClearContents
'6 - Kayıt silme işleminde sıra numarası düzeni bozulacağı için verileri sıralayarak yeniden sıra numarası veriyoruz.
Range("A2:J65536").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Range("A2") = 1
Range("A2").AutoFill Destination:=Range("A2:A" & Range("B65536").End(3).Row), Type:=xlFillSeries
'7 - VERİ sayfasındaki verileri ListBox nesnesine yüklüyoruz.
With KAYIT_FORMU.ListBox1
.BackColor = vbYellow
.ColumnCount = 9
.ColumnWidths = "100;100;100;100;100;100;100;120;100"
.ForeColor = vbRed
If Sheets("VERİ").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row
End If
End With
MsgBox "Kayıt silme işlemi tamamlanmıştır.", vbInformation, "Kayıt Silme İşlemi"
Else
MsgBox "Kayıt silme işlemi iptal edilmiştir.", vbInformation, "İşlem İptali"
End If
End Sub
Kayıt silme işlemi kod açıklamaları;
Birinci kodun açıklamaları;
1-Satır (If ListBox1 = Empty Then)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinin boş olup olmadığını sorguluyoruz. Eğer boş ise kullanıcıya bu nesneye ait hangi bilgiyi girmesi gerekiyorsa uyarı mesajı vererek bu bilgiyi girmesini amaçlıyoruz.
2-Satır (MsgBox "Veri kaydı bulunamamıştır.", vbExclamation, "Dikkat !")
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinin boş olduğunu ve henüz hiç veri girişi yapılmadığı konusunda kullanıcıya bilgilendirme mesajı veriyoruz.
3-Satır (Exit Sub)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesi boş olduğu için işlemi sonlandırıyoruz.
4-Satır (End If)
If sorgusunu sonlandırıyoruz.
İkinci kodun açıklamaları;
1-Satır (If ListBox1.ListIndex < 0 Then)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinden seçim yapılıp yapılmadığını sorguluyoruz.
ListIndex ifadesi ile ListBox1 nesnesi üzerinde seçim yaptığımız satırın index numarasını elde edebiliyoruz. ListBox1 nesnesinin ilk satırını seçtiğinizde ListIndex ifadesi 0 (sıfır) değerini döndürür. Eğer siz daha seçim yapmadan "KAYIT DEĞİŞTİR" butonuna tıklarsanız. ListIndex değeri "< 0" olacaktır.
2-Satır (MsgBox "Lütfen listeden veri seçimi yapınız.", vbExclamation, "Dikkat !")
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesinden seçim yapılmadığı için kullanıcıya bilgilendirme mesajı veriyoruz.
3-Satır (Exit Sub)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesi boş olduğu için işlemi sonlandırıyoruz.
4-Satır (End If)
If sorgusunu sonlandırıyoruz.
Üçüncü kodun açıklamaları;
1-Satır (If MsgBox("Seçtiğiniz kayıt silinecektir onaylıyor musunuz ?", vbCritical + vbYesNo, "Dikkat !") = vbYes Then)
Bu satır ile seçili kayıdın silinmesi için kullanıcıdan onay alıyoruz.
Dördüncü kodun açıklamaları;
1-Satır (ListBox1.RowSource = Empty)
Bu satır ile KAYIT_FORMU üzerindeki ListBox1 nesnesindeki verileri temizliyoruz. Bunu şu amaçla kullanıyoruz. ListBox nesnesi kaynağındaki veriye erişime izin vermez. Siz bu nesne üzerinden bir kayıt seçip değiştir dediğinizde direk olarak satır kaynağına erişmeye çalışacağınız için hata oluşacaktır. Bu hatanın oluşmaması için ListBox nesnesine yüklediğimiz verileri temizliyoruz.
Beşinci kodun açıklamaları;
1-Satır (Range("A" & ActiveCell.Row, "J" & ActiveCell.Row).ClearContents)
Eğer kullanıcı silme işlemi için onay vermişse bu satır devereye girecektir. ListBox nesnesinden seçtiğimiz kayıda ait satırın A-J sütun aralığını içerik olarak temizliyoruz.
Altıncı kodun açıklamaları;
1-Satır (Range("A2:J65536").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal)
Kayıt silme işleminde sıra numarası düzeni bozulacağı için verileri yeniden sıralıyoruz.
2-Satır (Range("A2") = 1)
Yeniden sıra numaralarını düzenlemek amacı ile A2 hücresine 1 değerini yazıyoruz.
3-Satır (Range("A2").AutoFill Destination:=Range("A2:A" & Range("B65536").End(3).Row), Type:=xlFillSeries)
B sütunundaki en son dolu satıra kadar A sütununa sıra numarası veriyoruz. Sıra numarasını AutoFill yöntemi ile veriyoruz. Bu yöntem klasik döngülere göre daha hızlı çalışamktadır. Bu yöntemin menü karşılığı DÜZEN-DOLDUR-SERİLER seçeneğidir.
Yedinci kodun açıklamaları;
1-Satır (With KAYIT_FORMU.ListBox1)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
3-Satır (.ColumnCount = 9)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütun sayısını 9 olarak ayarlıyoruz.
4-Satır (.ColumnWidths = "100;100;100;100;100;100;100;120;100")
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesinin sütunlarının genişlik ayarını yapıyoruz.
5-Satır (.ForeColor = vbRed)
Bu satır ile KAYIT_FORMU üzerindeki ListBox nesnesine aktarılacak verilerin yazı rengini kırmızı olarak ayarlıyoruz.
6-Satır (If Sheets("VERİ").Range("A2") = Empty Then)
Bu satır ile sayfada veri olup olmadığını sorguluyoruz. Eğer sayfadaki "A2" hücresi boş ise henüz veri girişi yapmadığımız anlamına gelmektedir.
7-Satır (.RowSource = Empty)
6. satırdaki sorgumuzun sonucu olumlu ise (yani sayfada veri yoksa) ListBox nesnesine herhangi bir veri aktarmamızın anlamı olmayacağından ListBox nesnesinin satır kaynağını boş olarak ayarlıyoruz.
8-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Burada (Sayfada veri varsa) anlamını taşımaktadır.
9-Satır (.RowSource = "VERİ!B2:J" & [VERİ!A65536].End(3).Row)
Bu satırı 6 satırdaki koşulun aksi gerçekleştiğinde ListBox nesnesine VERİ isimli sayfadaki kayıtlı B-J sütunlarındaki verileri yüklemek için kullanıyoruz.
10-Satır (End If)
If sorgusunu sonlandırıyoruz.
11-Satır (End With)
With ifadesini sonlandırıyoruz.
12-Satır (MsgBox "Kayıt silme işlemi tamamlanmıştır.", vbInformation, "Kayıt Silme İşlemi")
Bu satır ile kayıt silme işleminin tamamlandığına dair kullanıcıya bilgilendirme mesajı veriyoruz.
13-Satır (Else)
Bu satır 3 nolu kod bloğundaki onaylama sorusuna kullanıcının "Hayır" cevabı verdiği anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Aşağıdaki yapıda kullanılır.
If Koşul Then
Koşul sağlanıyorsa yapılacak işlemler
Else
Koşul sağlanmıyorsa yapılacak işlemler
End If
14-Satır (MsgBox "Kayıt silme işlemi iptal edilmiştir.", vbInformation, "İşlem İptali")
Bu satır ile kayıt silme işleminin iptal edildiğine dair kullanıcıya bilgilendirme mesajı veriyoruz.
15-Satır (End If)
If sorgusunu sonlandırıyoruz.
16-Satır (End Sub)
Bu satır ile Private Sub CommandButton3_Click() olayını sonlandırıyoruz.
Korhan Ayhan
20-05-2009, 22:20
Otuzikinci aşamada KAYIT_FORMU isimli UserFormumuzda "ÇIKIŞ" isimli butonumuza ait kod bloğunu açıyoruz. (Resim-27 / Resim-28)
RESİM-27
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_27.JPG
RESİM-28
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_28.JPG
Korhan Ayhan
20-05-2009, 22:40
Otuzüçüncü aşamada KAYIT_FORMU isimli UserFormumuz "ÇIKIŞ" isimli butonumuza programdan çıkış kodlarını yazıyoruz. Bu kodu RESİM-28 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip ÇIKIŞ isimli butona tıklayın.
Private Sub CommandButton4_Click() 'PROGRAMDAN ÇIKIŞ TUŞU (Programı kapatmak için kullanılmaktadır.)
Dim Onay As Byte
'1 - Programdan çıkış işlemi için kullanıcıdan onay alıyoruz.
Onay = MsgBox("Program kapatılacaktır onaylıyor musunuz ?" & vbCrLf & vbCrLf & _
"(EVET) ; Dosyayı kaydedip kapatır." & vbCrLf & _
"(HAYIR) ; Dosyayı kaydetmeden kapatır." & vbCrLf & _
"(İPTAL) ; İşlemi iptal eder.", vbCritical + vbYesNoCancel, "Dikkat !")
If Onay = vbYes Then
If Excel.Application.Windows.Count > 1 Then
ThisWorkbook.Save
ThisWorkbook.Close
Else
ThisWorkbook.Save
Application.Quit
End If
ElseIf Onay = vbNo Then
Application.DisplayAlerts = False
If Excel.Application.Windows.Count > 1 Then
ThisWorkbook.Close
Else
Application.Quit
End If
End If
End Sub
Programdan çıkış işlemi kod açıklamaları;
Birinci kodun açıklamaları;
1-Satır (Onay = MsgBox("Program kapatılacaktır onaylıyor musunuz ?" & vbCrLf & vbCrLf & _
"(EVET) ; Dosyayı kaydedip kapatır." & vbCrLf & _
"(HAYIR) ; Dosyayı kaydetmeden kapatır." & vbCrLf & _
"(İPTAL) ; İşlemi iptal eder.", vbCritical + vbYesNoCancel, "Dikkat !"))
Bu satır ile programdan çıkış işlemi için kullanıcıdan onay alıyoruz.
2-Satır (If Onay = vbYes Then)
Kullanıcı onaylama sorgusuna evet cevabı vermişse bu satır devreye girecektir.
3-Satır (If Excel.Application.Windows.Count > 1 Then)
Bu satır ile açık olan excel uygulamalarının sayısını sorguluyoruz. Bu sorguyu şu amaçla kullanıyoruz. Eğer birden fazla excel çalışma kitabınız açıksa siz sadece hazırlamış olduğumuz dosyayı kapatmak isteyebilirsiniz. Burada açık excel uygulamalarını saydırarak kodumuzu ona göre yönlendiriyoruz.
4-Satır (ThisWorkbook.Save)
Bu satır ile aktif excel dosyasını kaydediyoruz.
5-Satır (ThisWorkbook.Closed)
Bu satır ile aktif excel dosyasını kapatıyoruz.
6-Satır (Else)
Üçüncü satırdaki sorgumuzun sonucu sağlanmıyorsa bu satır devreye girecektir. Bu durumda açık olan excel uygulaması sayısı 1 olacaktır.
7-Satır (ThisWorkbook.Save)
Bu satır ile aktif excel dosyasını kaydediyoruz.
8-Satır (Application.Quit)
Bu satır ile excel uygulamasını tamamen kapatıyoruz.
9-Satır (End If)
If sorgusunu sonlandırıyoruz.
10-Satır (ElseIf Onay = vbNo Then)
Kullanıcı onaylama sorgusuna hayır cevabı vermişse bu satır devreye girecekir.
11-Satır (Application.DisplayAlerts = False)
Bu satır ile ekran uyarı mesaj kutularını pasif hale getiriyoruz. Bunu şu amaçla kullanıyoruz. Excel dosyasını kapatmak istediğinizde size değişiklikleri kaydetmek isteyip istemediğinizi soracaktır. Kullanıcı zaten bizim onay sorgumuza hayır cevabı verdiği için dosyanın kaydedilmesine gerek yoktur. İşte otomatik olarak çıkan bu mesaj kutusunun karşımıza gelmemesi için bu komutu kullanıyoruz.
12-Satır (If Excel.Application.Windows.Count > 1 Then)
Bu satır ile açık olan excel uygulamalarının sayısını sorguluyoruz. Bu sorguyu şu amaçla kullanıyoruz. Eğer birden fazla excel çalışma kitabınız açıksa siz sadece hazırlamış olduğumuz dosyayı kapatmak isteyebilirsiniz. Burada açık excel uygulamalarını saydırarak kodumuzu ona göre yönlendiriyoruz.
13-Satır (ThisWorkbook.Closed)
Bu satır ile aktif excel dosyasını kapatıyoruz.
14-Satır (Else)
Onikinci satırdaki sorgumuzun sonucu sağlanmıyorsa bu satır devreye girecektir. Bu durumda açık olan excel uygulaması sayısı 1 olacaktır.
15-Satır (Application.Quit)
Bu satır ile excel uygulamasını tamamen kapatıyoruz.
16-Satır (End If)
If sorgusunu sonlandırıyoruz.
17-Satır (End If)
If sorgusunu sonlandırıyoruz.
18-Satır (End Sub)
Bu satır ile Private Sub CommandButton4_Click() olayını sonlandırıyoruz.
Korhan Ayhan
20-05-2009, 23:32
Otuzdördüncü aşamada KAYIT_FORMU isimli UserFormumuzda sağ üst köşede bulunan çarpı (X) işaretine tıkladığımızda "ÇIKIŞ" isimli butonumuza ait kodların çalışması için gerekli kod bloğunu açıyoruz. (Resim-29 / Resim-30 / Resim-31)
RESİM-29
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_29.JPG
RESİM-30
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_30.JPG
RESİM-31
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_31.JPG
Korhan Ayhan
20-05-2009, 23:41
Otuzbeşinci aşamada KAYIT_FORMU isimli UserFormumuz sağ üst köşesinde bulunan çarpı (X) işaretine "ÇIKIŞ" isimli butonumuza ait prosedürü çalıştıran kodları yazıyoruz. Bu kodu RESİM-31 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip sağ üst köşedeki çarpı işaretine tıklayın.
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then Cancel = True
CommandButton4_Click
End Sub
Kodun açıklamaları;
1-Satır (If CloseMode = 0 Then Cancel = True)
Kullanıcı UserFormun sağ üst köşesindeki çarpı (X) işaretine tıklarsa formun CloseMode durumu sıfır olur bu durumda form kapanarak excel sayfasına dönülür. Eğer bunu engellemek istersek Cancel değerini True yaparız. Bu satırı yazmazsak kullanıcı çarpıya tıkladığı anda ÇIKIŞ butonuna atadığımız kod çalışacaktır. Bu kod çalıştığında dosyanın kayıt edilmesi ile ilgili bir soru sorulmaktadır. Kullanıcı burada iptal tuşuna tıklarsa form kapanır ve excel sayfası açılır. Bizim burada bu satırı kullanmamızın amacı kullanıcın excel sayfasına ulaşmasını engellemektir.
2-Satır (CommandButton4_Click)
Bu satır ile ÇIKIŞ butonuna ait kod prosedürünü otomatik olarak çalıştırıyoruz.
Korhan Ayhan
24-05-2009, 23:30
Otuzaltıncı aşamada KAYIT_FORMU isimli UserFormumuzda "DEPARTMAN TANIMLAMA" isimli butonumuza ait kod bloğunu açıyoruz. (Resim-32 / Resim-33)
RESİM-32
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_32.JPG
RESİM-33
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_33.JPG
Korhan Ayhan
24-05-2009, 23:39
Otuzyedinci aşamada KAYIT_FORMU isimli UserFormumuzda "DEPARTMAN TANIMLAMA" isimli butonumuza programdan çıkış kodlarını yazıyoruz. Bu kodu RESİM-33 de açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip DEPARTMAN TANIMLAMA isimli butona tıklayın.
Private Sub CommandButton5_Click()
DEPARTMAN_TANIMLAMA.Show
End Sub
DEPARTMAN_TANIMLAMA formumuzda kullanmış olduğumuz butonları isimlendirmediğimiz için hepsi ilk halleri gibi görünmektedir. Bu aşamadan sonra bunları düzenleyeceğiz.
Korhan Ayhan
25-05-2009, 00:11
Otuzsekizinci aşamada DEPARTMAN_TANIMLAMA isimli UserFormumuz açılırken form üzerindeki bazı nesneleri biçimlendireceğiz. (Resim-35)
RESİM-35
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_35.JPG
Korhan Ayhan
25-05-2009, 22:41
Otuzdokuzuncu aşamada DEPARTMAN_TANIMLAMA isimli UserFormumuzun üzerindeki nesneleri biçimlendirmek için gerekli kodları yazıyoruz.
Option Explicit
Option Base 1
Private Sub UserForm_Initialize()
Dim X As Byte
Dim Buton_Adı() As Variant
'1 - Label1 nesnesini isimlendirip biçimlendiriyoruz.
With Label1
.Caption = "DEPARTMAN ADI"
.Font.Bold = True
.Font.Size = 10
.ForeColor = vbBlue
End With
'2 - Butonlara vereceğimiz isimleri diziye alıyoruz.
Buton_Adı = Array("EKLE", "DEĞİŞTİR", "SİL", "ANA MENÜ")
'3 - Diziyi döngüye alarak butonları isimlendirip biçimlendiriyoruz.
For X = 1 To UBound(Buton_Adı())
With DEPARTMAN_TANIMLAMA
.Controls("CommandButton" & X).Caption = Buton_Adı(X)
.Controls("CommandButton" & X).Font.Size = 10
.Controls("CommandButton" & X).Font.Bold = True
.Controls("CommandButton" & X).ForeColor = vbRed
End With
Next
'4 - ListBox1 nesnesine departman isimlerini yüklüyoruz.
With DEPARTMAN_TANIMLAMA.ListBox1
.BackColor = vbYellow
.ForeColor = vbRed
.TextAlign = fmTextAlignCenter
If Sheets("PARAMETRELER").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row
End If
End With
End Sub
Bu kod bloğunda kullanacağımız her değişken içinde Dim ile başlayan tanımlamaları yazmalıyız.
Sizlerde kırmızı renkle belirttiğim bölüme aşağıdaki tanımlamaları ekleyiniz.
Dim X As Byte
Dim Buton_Adı() As Variant
Birinci kodun açıklamaları;
1-Satır (With DEPARTMAN_TANIMLAMA.Label1)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki Label1 nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.Caption = "DEPARTMAN ADI")
Label1 nesnesinin Caption (Başlık) değerini "DEPARTMAN ADI" olarak tanımlıyoruz.
3-Satır (.Font.Bold = True)
Label1 nesnesinin yazı fontunu bold (kalın) yapıyoruz.
4-Satır (.Font.Size = 10)
Label1 nesnesinin yazı font büyüklüğünü 10 punto olarak ayarlıyoruz.
5-Satır (.ForeColor = vbBlue)
Label1 nesnesinin yazı font rengini mavi olarak ayarlıyoruz.
6-Satır (End With)
With ifadesini sonlandırıyoruz.
İkinci kodun açıklamaları;
1-Satır (Buton_Adı = Array("EKLE", "DEĞİŞTİR", "SİL", "ANA MENÜ"))
Bu satırı DEPATMAN_TANIMLAMA formu üzerindeki CommandButton nesnelerine isim vermek amacıyla oluşturuyoruz. "Array" komutu ile verilerimizi diziye alarak kolaylıkla döngü içinde kullanabiliriz.
Üçüncü kodun açıklamaları;
1-Satır (For X = 1 To UBound(Buton_Adı()))
Bu satırda "X" adında bir döngü başlatıyoruz. "X" döngüsünün başlangıç değeri 1, bitiş değeride "Buton_Adı" adlı diziye aldığımız veri sayısıdır.
"Array" ifadesi ile diziye alınmış verilerin sayısını "Ubound" ifadesi ile öğreniyoruz. Array ile diziye alınan veriler aşağıdaki dizilimi oluştururlar.
Buton_Adı = Array(0, 1, 2, 3, 4)
Dikkat ettiyseniz dizimizin ilk değeri (0) sıfır indeksine sahiptir. Eğer kodlarımızın ilk satırı olan "Option Explicit" ifadesi altında yazdığımız "Option Base 1" ifadesini kullanmasaydık döngü başlangıcını aşağıdaki şekilde yazmamız gerekecekti.
For X = 0 To UBound(Buton_Adı())
"Option Base 1" ifadesini kullanarak döngümüzü 1 değeri ile başlatmayı sağlıyoruz.
2-Satır (With DEPARTMAN_TANIMLAMA)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki CommandButtonları kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
3-Satır (.Controls("CommandButton" & X).Caption = Buton_Adı(X))
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki CommandButtonların başlık (Caption) değerlerini oluşturduğumuz diziden döngü ile alıyoruz.
4-Satır (.Controls("CommandButton" & X).Font.Size = 10)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki CommandButtonların yazı font boyutunu (Size) 10 olarak ayarlıyoruz.
5- Satır (.Controls("CommandButton" & X).Font.Bold = True)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki CommandButtonların yazı fontunu koyu (Bold) olarak ayarlıyoruz.
6- Satır (.Controls("CommandButton" & X).ForeColor = vbRed)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki CommandButtonların yazı font rengini (ForeColor) kırmızı olarak ayarlıyoruz.
7-Satır (End With)
With ifadesini sonlandırıyoruz.
8-Satır (Next)
X döngüsüne devam ediyoruz.
Dördüncü kodun açıklamaları;
1-Satır (With DEPARTMAN_TANIMLAMA.ListBox1)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satırı KAYIT_FORMU üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
3-Satır (.ForeColor = vbRed)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesine yükleyeceğimiz verilerin yazı font rengini kırmızı olarak ayarlıyoruz.
4-Satır (If Sheets("PARAMETRELER").Range("A2") = Empty Then)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesine yükleyeceğimiz verilerin sayfasında veri olup olmadığını sorguluyoruz. Eğer ilgili sayfanın A2 hücresi boşsa henüz veri girişi yapılmadığı anlamına gelmektedir.
5-Satır (.RowSource = Empty)
Bu satırı 6 satırdaki koşul gerçekleşirse DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesine veri yüklememek için kullanıyoruz. RowSource ifadesi veri kaynağı anlamına gelmektedir.
6-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Aşağıdaki yapıda kullanılır.
If Koşul Then
Koşul sağlanıyorsa yapılacak işlemler
Else
Koşul sağlanmıyorsa yapılacak işlemler
End If
7-Satır (.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row)
Bu satırı 6 satırdaki koşul gerçekleştiğinde ListBox nesnesine PARAMETRELER isimli sayfadaki kayıtlı A sütunundaki verileri yüklemek için kullanıyoruz.
8-Satır (End If)
If sorgusunu sonlandırıyoruz.
9-Satır (End With)
With ifadesini sonlandırıyoruz.
10-Satır (End Sub)
Bu satır ile Private Sub UserForm_Initialize() olayını sonlandırıyoruz.
Korhan Ayhan
28-06-2009, 23:17
Kırkıncı aşamada DEPARTMAN_TANIMLAMA isimli UserFormumuzda "EKLE" isimli butonumuza ait kod bloğunu açıyoruz. (Resim-36 / Resim-37)
RESİM - 36
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_36.JPG
RESİM - 37
http://www.excel.web.tr/derres/korhan/Personel_Kayit_Programi_37.JPG
Korhan Ayhan
28-06-2009, 23:38
Kırkbirinci aşamada DEPARTMAN_TANIMLAMA isimli UserFormumuz "EKLE" isimli butonumuza kayıt ekleme kodlarını yazıyoruz. Bu kodu RESİM-36 da açtığımız kod bloğuna yazacağız.
Aşağıdaki kodu UserFormunuza ekleyip EKLE isimli butona tıklayın.
Private Sub CommandButton1_Click() 'EKLE TUŞU (Yeni departman girişi için kullanılmaktadır.)
Dim Satır As Long, Say As Byte
Satır = Sheets("PARAMETRELER").Range("A65536").End(3).Row + 1
'1 - Doğru veri tabanı oluşturmak için kullanıcının tüm verileri girmesi gerekmektedir.
'Aşağıdaki sorgularla personele ait tüm bilgilerin girilmesini zorunlu kılıyoruz.
If TextBox1.Text = "" Then
MsgBox "Lütfen -DEPARTMAN ADI- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi"
TextBox1.SetFocus
Exit Sub
End If
'2 - DEPARTMAN ADI sorgulaması yaparak mükerrer kayıt girişlerini engelliyoruz.
Say = WorksheetFunction.CountIf(Sheets("PARAMETRELER").Range("A2:A65536"), TextBox1.Text)
If Say > 0 Then
MsgBox "Bu kayıt daha önce girilmiştir !" & vbNewLine & _
"Lütfen girdiğiniz bilgileri kontrol ediniz.", vbCritical, "Mükerrer Kayıt"
Exit Sub
End If
'3 - Kayıt işlemi için gerekli bilgileri ilgili hücrelere aktarıyoruz.
Sheets("PARAMETRELER").Cells(Satır, "A") = TextBox1.Text
'4 - Departman isimlerini alfabetik olarak sıralıyoruz.
Sheets("PARAMETRELER").Columns("A:A").Sort Key1:=Sheets("PARAMETRELER").Range("A1"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
'5 - Kayıt işleminden sonra verileri ListBox1 nesnesine aktarıyoruz.
With DEPARTMAN_TANIMLAMA.ListBox1
.BackColor = vbYellow
.ForeColor = vbRed
.TextAlign = fmTextAlignCenter
If Sheets("PARAMETRELER").Range("A2") = Empty Then
.RowSource = Empty
Else
.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row
End If
End With
MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation, "Kayıt İşlemi"
End Sub
Bu kod bloğunda kullanacağımız her değişken içinde Dim ile başlayan tanımlamaları yazmalıyız.
Sizlerde kırmızı renkle belirttiğim bölüme aşağıdaki tanımlamaları ekleyiniz.
Dim Satır As Long, Say As Byte
Yeni departman adını PARAMETRELER isimli sayfada A sütunundaki ilk boş hücreye ekleyeceğimiz için aşağıdaki kod ile bu hücreyi buluyoruz.
Satır = Sheets("PARAMETRELER").Range("A65536").End(3).Row + 1
Birinci kodun açıklamaları;
1-Satır (If TextBox1.Text = "" Then)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki TextBox1 nesnesinin boş olup olmadığını sorguluyoruz. Eğer boş ise kullanıcıya bu nesneye ait hangi bilgiyi girmesi gerekiyorsa uyarı mesajı vererek bu bilgiyi girmesini amaçlıyoruz.
2-Satır (MsgBox "Lütfen -DEPARTMAN ADI- bilgisini giriniz !", vbExclamation, "Eksik Bilgi Girişi")
1. satırdaki koşul sağlandığı için kullanıcıya gerekli bilgiyi girdirmeyi amaçlayan uyarı mesajı veriyoruz.
3-Satır (TextBox1.SetFocus)
Bu satır ile ilgili nesneyi seçiyoruz. SetFocus ifadesi nesneye fokuslanmayı sağlar. Yani o nesne seçili hale gelir. Bu şekilde veri girişi için kullanıcıyı zorlar.
4-Satır (Exit Sub)
Bu satır ile Sub yordamından çıkıyoruz. Bu ifade şu anlama gelmektedir. Kullanıcı eksik bilgi girişi yaptığı için kayıt işlemi eksik kalmıştır. Eğer Sub yordamından çıkmazsak kayıt işlemi eksik bilgi ile tamamlanacaktı. Bunu önlemek adına bu ifadeyi kullanıyoruz.
5-Satır (End If)
1. satırdaki If sorgumuzu sonlandırıyoruz.
İkinci kodun açıklamaları;
1-Satır (Say = WorksheetFunction.CountIf(Sheets("PARAMETRELER").Range("A2:A65536"), TextBox1.Text))
Bu satır ile yeni kayıt işleminde girilen Dapartman Adı verisini A sütununda sayıyoruz. Sayılan değeri Say isimli değişkene eşitliyoruz.
Gördüğünüz gibi "WorksheetFunction" ifadesi kullanılmıştır. Bu ifade ile excel sayfasında kullanmış olduğumuz yerleşik formülleri kod bölümündede kullanabiliyoruz. Bu ifadeyi yazdıktan sonra tek nokta (.) yazdığınızda fonksiyonların listesi açılacaktır. Siz işinize yarayan diğer fonksiyonlarıda kullanabilirsiniz.
CountIf = Eğersay (Fonksiyonların Türkçe-İngilizce karşılıklarına dersane bölümünde ulaşabilirsiniz.)
2-Satır (If Say > 0 Then)
Bu satır ile Say değişkeninin aldığı değer sorguluyoruz. Eğer bu değer sıfırdan büyükse Departman Adı mükerrer (çift) girilmek isteniyor anlamındadır.
3-4-Satırlar (MsgBox "Bu kayıt daha önce girilmiştir !" & vbNewLine & _
"Lütfen girdiğiniz bilgileri kontrol ediniz.", vbCritical, "Mükerrer Kayıt")
Bu satırlar ile kullanıcıyı girmek istediği kaydın mükerrer olduğu uyarısını vererek bilgilendiriyoruz.
5-Satır (Exit Sub)
Bu satır ile Sub yordamını sonlandırıyoruz. Kayıt mükerrer olduğu için işlemi sonlandırmamız gerekiyor.
6-Satır (End If)
2. satırdaki If sorgumuzu sonlandırıyoruz.
Üçüncü kodun açıklamaları;
1-Satır (Sheets("PARAMETRELER").Cells(Satır, "A") = TextBox1.Text)
"A" sütununa "DEPARTMAN ADI" bilgisini yazdırıyoruz.
Dördüncü kodun açıklamaları;
1-2-3-Satırlar (Sheets("PARAMETRELER").Columns("A:A").Sort Key1:=Sheets("PARAMETRELER").Range("A1"), _
Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal)
Bu satırı PARAMETRELER sayfasının A sütununu alfabetik sıralamak için kullanıyoruz.
Beşinci kodun açıklamaları;
1-Satır (With DEPARTMAN_TANIMLAMA.ListBox1)
Bu satırı DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesini kolaylıkla biçimlendirmek amacıyla kullanıyoruz.
2-Satır (.BackColor = vbYellow)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesinin arkaplan rengini sarı olarak ayarlıyoruz.
5-Satır (.ForeColor = vbRed)
Bu satır ile DEPARTMAN_TANIMLAMA formu üzerindeki ListBox nesnesine aktarılacak verilerin yazı rengini kırmızı olarak ayarlıyoruz.
6-Satır (If Sheets("PARAMETRELER").Range("A2") = Empty Then)
Bu satır ile sayfada veri olup olmadığını sorguluyoruz. Eğer sayfadaki "A2" hücresi boş ise henüz veri girişi yapmadığımız anlamına gelmektedir.
7-Satır (.RowSource = Empty)
6. satırdaki sorgumuzun sonucu olumlu ise (yani sayfada veri yoksa) ListBox nesnesine herhangi bir veri aktarmamızın anlamı olmayacağından ListBox nesnesinin satır kaynağını boş olarak ayarlıyoruz.
8-Satır (Else)
Bu satır 6 satırdaki koşul gerçekleşmezse anlamına gelmektedir. Genel anlamda yazacağımız sorgulamanın aksi durumunda yapılacak işlemleri yazmamıza olanak verir. Burada (Sayfada veri varsa) anlamını taşımaktadır.
9-Satır (.RowSource = "PARAMETRELER!A2:A" & [PARAMETRELER!A65536].End(3).Row)
Bu satırı 6 satırdaki koşulun aksi gerçekleştiğinde ListBox nesnesine PARAMETRELER isimli sayfadaki kayıtlı A sütunundaki verileri yüklemek için kullanıyoruz.
10-Satır (End If)
If sorgusunu sonlandırıyoruz.
11-Satır (End With)
With ifadesini sonlandırıyoruz.
12-Satır (MsgBox "Kayıt işlemi tamamlanmıştır.", vbInformation, "Kayıt İşlemi")
Bu satır ile kayıt işleminin tamamlandığına dair kullanıcıya bilgilendirme mesajı veriyoruz.
13-Satır (End Sub)
Bu satır ile Private Sub CommandButton1_Click() olayını sonlandırıyoruz.
vBulletin v3.7.2, Copyright ©2000-2012, Jelsoft Enterprises Ltd.