Macro'yla Borç Alacak Girişi ve Mizanı
Excel Macro kullanarak bir Borç Alacak Girişi ekranı oluşturacağız.
Bu ekranı bir menüden çağıracağız.
Bu menü, Excel sayfasındaki dikdörtgen şekle Makro Ata seçeneğiyle atanan prosedürle görüntüleyeceğiz.
Borç Alacak Girişi ekranından Excel satırlarına yüklenen bilgilerden her bir Ad Soyad'a ilişkin borç ve alacaklar ayrı ayrı toplanacak. Bu borç alacak dengesinden bir Mizan oluşturacağız.
Bu işlemler ile ilgili ekran görüntüleri ve ilgili Macro program kodları aşağıda verilmiştir. Bu kodları kopyalayıp değişiklik yaparak kullanabilirsiniz.
Aşağıda önce Macro program kodlarını ve sonra ekran görüntülerini bulabilirsiniz.
-------------------------------------------------------------------------------------------------------------------------
Excel'deki Dikdörtgen Şekle 'Makro Ata' Seçeneğiyle Atanan Public Prosedür
Public Sub EkraniGoster()
frmAnaMenu.Show
End Sub
frmAnaMenu.Show
End Sub
-------------------------------------------------------------------------------------------------------------------------
frmAnaMenu Ekranının Private Prosedürleri
Private Sub btnBorcAlacakGirisi_Click()
frmAnaMenu.Hide
Range("D:D").NumberFormat = "General"
Range("E:E").NumberFormat = "General"
LastRow = Cells(Rows.Count, "B").End(xlUp).Row 'B kolonunun satır sayısı bulunmaktadır.
frmBorcAlacakGirisi.SatirNo = LastRow 'Ekrandaki Satır No alanına, bu satır sayısı atanmaktadır.
frmBorcAlacakGirisi.Show
End Sub
Private Sub btnCikis_Click()
c = MsgBox("ÇIKAYIM MI?", vbQuestion + vbYesNo, "DİKKAT.")
If c = 6 Then
ThisWorkbook.Save
ThisWorkbook.Close
End If
End Sub
Private Sub btnMizanOlustur_Click()
Range("K:O").ClearContents 'K ve O kolonları arası temizlenmektedir.
LastRow1 = Cells(Rows.Count, "B").End(xlUp).Row 'B kolonundaki satır sayısı bulunmaktadır.
Range("B1:B" & LastRow1).Copy Range("K1:K" & LastRow1) 'B kolonundan K kolonuna değerler kopyalanmaktadır.
Range("K1:K" & LastRow1).RemoveDuplicates 1, xlNo 'Tekrarlı satırlar temizlenmektedir.
LastRow2 = Cells(Rows.Count, "K").End(xlUp).Row 'K kolonundaki satır sayısı bulunmaktadır.
Range("K1:K" & LastRow2).Sort key1:=Range("K1:K" & LastRow2), order1:=xlAscending, Header:=xlYes 'K kolonunda ilgili satırlar Artan şekilde ve Başlığı var olarak sıralanmaktadır.
Range("L1") = "Borç Toplamı"
Range("M1") = "Alacak Toplamı"
Range("N1") = "Bakiye"
Range("O1") = "Borç/Alacak"
Range("K1:O1").Select
With Selection
.Font.Bold = True
.ColumnWidth = 15
End With
Range("A1").Select
For r = 2 To LastRow2 'K kolonundaki 2. satırdan son satıra kadar döngü çalıştırılmaktadır.
Cells(r, 12) = WorksheetFunction.SumIf(Range("B1:B" & LastRow1), Cells(r, 11), Range("D1:D" & LastRow1)) 'ETopla fonksiyonu kullanılarak B kolonunda Cells(r, 11) hücresindeki değer araştırılıp D kolonunda toplama yapılmaktadır.
Cells(r, 13) = WorksheetFunction.SumIf(Range("B1:B" & LastRow1), Cells(r, 11), Range("E1:E" & LastRow1)) 'ETopla fonksiyonu kullanılarak B kolonunda Cells(r, 11) hücresindeki değer araştırılıp E kolonunda toplama yapılmaktadır.
If Cells(r, 12) > Cells(r, 13) Then 'Borç alacaktan büyükse
Cells(r, 14) = Cells(r, 12) - Cells(r, 13) 'Borç toplamından alacak toplamı çıkarılmaktadır ve Bakiye hesaplanmaktadır.
Cells(r, 15) = "Borçlu" 'B/A = Borçlu atanmaktadır.
ElseIf Cells(r, 12) < Cells(r, 13) Then 'Alacak borçtan büyükse
Cells(r, 14) = Cells(r, 13) - Cells(r, 12) 'Alacak toplamından borç toplamı çıkarılmaktadır ve Bakiye hesaplanmaktadır.
Cells(r, 15) = "Alacaklı" 'B/A = Alacaklı atanmaktadır.
Else 'Hiçbiri değilse
Cells(r, 14) = 0 'Bakiye = 0 atanmaktadır.
Cells(r, 15) = "" 'B/A = "" atanmaktadır.
End If
Next r
End Sub
--------------------------------------------------------------------------------------------------------------------
frmBorcAlacakGirisi Ekranının Private Prosedürleri
Private Sub btnKaydet_Click()
If frmBorcAlacakGirisi.SatirNo = 0 Then frmBorcAlacakGirisi.SatirNo = 1
frmBorcAlacakGirisi.SatirNo = frmBorcAlacakGirisi.SatirNo + 1
r = frmBorcAlacakGirisi.SatirNo
If frmBorcAlacakGirisi.Borc = "" Then frmBorcAlacakGirisi.Borc = 0
If frmBorcAlacakGirisi.Alacak = "" Then frmBorcAlacakGirisi.Alacak = 0
'Formdaki alanlarda bulunan değerler ilgili hücrelere atanmaktadır.
Cells(r, 1) = frmBorcAlacakGirisi.Tarih
Cells(r, 2) = frmBorcAlacakGirisi.AdiSoyadi
Cells(r, 3) = frmBorcAlacakGirisi.Aciklama
Cells(r, 4) = Format(frmBorcAlacakGirisi.Borc, "0")
Cells(r, 5) = Format(frmBorcAlacakGirisi.Alacak, "0")
End Sub
Private Sub btnKapat_click()
frmBorcAlacakGirisi.Hide
frmAnaMenu.Show
End Sub
-------------------------------------------------------------------------------------------------------------------------
Menü Düğmesi
Menüyü Göster Kodlaması
frmBorcAlacakGirisi Formu Oluşturulması
frmBorcAlacakGirisi Düğmeleri Kodlaması
Menüdeki Çıkış Düğmesine Basıldığında
Formlardaki düğmeleri oluştururken Toolbox üzerinden Command Button isimli düğmeyi tıklıyoruz.
Formda bir düğme oluşmaktadır.
Oluşan düğmenin Properties çerçevesindeki Name özelliğinde, butona programda kullanılacak bir isim veriyoruz.
Caption özelliğine düğmenin ekranda görünecek ismini yazıyoruz.
Oluşan düğmeyi tıkladığınızda, formun kod kısmına, "<DüğmeAdı>_Click()" şeklinde ismi olan, Private özellikli boş prosedür eklenir.
Bu boş prosedür bloklarının içine ilgili kodlar yazılır.
Formlardaki bilgi giriş alanlarını oluşturmak için, Toolbox üzerindeki Text Box isimli düğmeyi tıklıyoruz.
Oluşan metin kutusuna Properties çerçevesindeki Name özelliğinde, metin kutusuna programda kullanılacak bir isim veriyoruz.
Metin kutusunu, bilginin girilebileceği şekilde boyutlandırıyoruz.
Metin kutularının sol tarafına etiket eklemek için, Toolbox üzerindeki Label isimli düğmeyi tıklıyoruz.
Oluşan etikete Properties çerçevesindeki Name özelliğinde, etikete programda kullanılacak bir isim veriyoruz.
Caption özelliğine etiketin metin kutusuna ilişkin ekranda görünecek ismini yazıyoruz.