EXCEL PROGRAM YAPMA

Excel yeşil X logosu yanında küçük UserForm pencere şeması iki etiket iki textbox ve kaydet butonu mini uygulama metaforu

Excel sadece bir tablo programı değildir; üzerine yazılan VBA kodları ve UserForm'larla küçük bir kurumsal uygulamaya dönüşebilir. Müşteri kayıt sistemi, stok takip ekranı, fatura üretme aracı, küçük bir CRM — bunların hepsi Excel program yapma yöntemleriyle bir hafta sonu içinde işler hâle getirilebilir.

1. Excel ile Program Yapmak Ne Demektir?

Klasik Excel kullanımında dosya kalıbına göre veri girilir, formüller hesaplar, pivot tablo özetler. "Program yapma" boyutunda işin akışı tam tersine döner: kullanıcı bir butona basar, arka planda VBA yürür, başka bir sayfada veri oluşur, dosya kaydedilir ya da PDF üretilir. Yani veri akışını ve iş kuralını kod yönetir, hücreler ham veri taşıyıcı haline gelir.

Güçlü Yanları

  • Hızlı geliştirme: Bir CRM yazılımı geliştirilmesi haftalar alır; Excel'de küçük bir kayıt sistemi 1-2 gün
  • Dağıtım kolaylığı: Tek bir .xlsm dosyası USB veya e-posta ile paylaşılır
  • Eğitim eşiği düşük: Excel zaten ofiste yaygın; kullanıcı yeni bir arayüze alışmak zorunda değil
  • Esnek özelleştirme: İhtiyaç değiştikçe kod hızla güncellenir

Sınırları

  • Çok kullanıcı eş zamanlı erişim sıkıntılıdır
  • Veri 100.000 satırı geçince performans düşer
  • Mobil/web erişim sınırlıdır
  • Çok karmaşık iş kuralları için bakım maliyeti büyür

Doğru senaryo: tek bir kullanıcı veya küçük ekip, sınırlı veri hacmi, hızlı geliştirme ihtiyacı, masaüstü Excel.

2. Hangi Tür Programları Excel'de Yapabilirsiniz?

TürÖrnek
Veri toplamaMüşteri kayıt formu, anket sonuçları, sipariş girişi
Hesaplama aracıBordro hesaplayıcı, fiyat hesaplama, vergi simülasyonu
Takip sistemiStok takip, müşteri takip, görev takip, vardiya planlama
Belge üreteciFatura, tahsilat makbuzu, teklif, sözleşme şablonu
Karar destekSenaryo analizi, kredi simülasyonu
Veri konsolidasyonBirden çok dosyadan veriyi tek tabloda birleştiren araç
Altı program türü kart Veri Toplama Hesaplama Aracı Takip Sistemi Belge Üreteci Karar Destek Konsolidasyon küçük ikon ızgara

3. Geliştirme Ortamı — VBA Editörü

Excel program yapımının kalbi VBA editörüdür. Alt + F11 kısayoluyla açılır.

Eklenmesi Gereken Bileşenler

Module
Genel amaçlı makro ve fonksiyon kodları buraya yazılır
UserForm
Görsel kullanıcı arayüzü; pencere, buton, metin kutusu içerir
Class Module
Karmaşık projelerde nesne yönelimli yapı kurmak için
Worksheet kodu
Sayfaya özel olaylar (hücre değişimi, çift tıklama vb.) için

4. Adım 1: Veri Modelini Kurma

Programa başlamadan önce hangi verilerin nereye gideceğine karar verilir. Tipik bir kayıt sistemi için iki ana sayfa yeterlidir:

  • Form sayfası: Kullanıcı veri girişi yapar (butonla form açılır, kayıt arşive yazılır)
  • Veri (Arşiv) sayfası: Tüm kayıtların tablo olarak saklandığı yer. Her satır bir kayıt, her sütun bir alan

Ek olarak referans tabloları (Müşteriler, Ürünler, Personel) ayrı sayfalarda tutulur. Bunlar UserForm'daki açılır listelere kaynaklık eder.

5. Adım 2: UserForm Tasarımı

VBA editöründe Insert > UserForm menüsünden yeni form eklenir.

Toolbox Bileşenleri

  • Label: Etiket metni (örn. "Müşteri Adı:")
  • TextBox: Metin girişi
  • ComboBox: Açılır liste (önceden tanımlı seçenekler)
  • CheckBox: Onay kutusu
  • OptionButton: Radyo düğmesi
  • CommandButton: Buton (Kaydet, İptal vb.)
  • ListBox: Çoklu seçimli liste
  • Frame: Bileşenleri gruplayan kutu

Her bileşenin Properties penceresinden adı (Name), görünür metni (Caption), font, renk, boyut özellikleri ayarlanır. Adlandırma kuralı: TextBox için txtMusteriAd, Button için btnKaydet, ComboBox için cmbKategori gibi prefix kullanmak okunabilirliği büyük ölçüde artırır.

UserForm tasarım modu solda Toolbox bileşen paleti Label TextBox ComboBox Button sağda form üzerinde yerleştirilmiş alanlar

6. Adım 3: UserForm'u Açma

Form hazırlandıktan sonra Excel'den bunu açacak bir tetikleyici gerekir. Module'e şu kod yazılır:

Sub FormuAc()
 KayitForm.Show
End Sub

Sayfaya buton eklenir, sağ tık > Makro Ata ile FormuAc seçilir. Buton tıklandığında form açılır.

7. Adım 4: Kaydet Butonunun Kodu

UserForm üzerinde "Kaydet" butonuna çift tıklayın; otomatik kod boşluğu açılır.

Private Sub btnKaydet_Click()
 Dim arsiv As Worksheet
 Dim sonSatir As Long

 ' Doğrulama
 If Trim(txtMusteriAd.Value) = "" Then
 MsgBox "Müşteri adı boş bırakılamaz."
 txtMusteriAd.SetFocus
 Exit Sub
 End If

 Set arsiv = ThisWorkbook.Sheets("Kayitlar")
 sonSatir = arsiv.Cells(arsiv.Rows.Count, "A").End(xlUp).Row + 1

 ' Veri yazma
 arsiv.Cells(sonSatir, 1).Value = Now
 arsiv.Cells(sonSatir, 2).Value = txtMusteriAd.Value
 arsiv.Cells(sonSatir, 3).Value = txtTelefon.Value
 arsiv.Cells(sonSatir, 4).Value = cmbKategori.Value
 arsiv.Cells(sonSatir, 5).Value = txtTutar.Value

 MsgBox "Kayıt eklendi.", vbInformation
 FormuTemizle
End Sub

Private Sub FormuTemizle()
 txtMusteriAd.Value = ""
 txtTelefon.Value = ""
 cmbKategori.Value = ""
 txtTutar.Value = ""
 txtMusteriAd.SetFocus
End Sub

Bu kod doğrulama yapar, son boş satırı bulur, formdaki tüm alanları arşive yazar, mesaj gösterir ve formu temizler. Yapı her veri toplama programının iskeletini oluşturur.

8. Adım 5: Açılır Listeleri Dinamik Doldurma

Private Sub UserForm_Initialize()
 Dim kategori As Worksheet
 Dim sonSatir As Long, i As Long

 Set kategori = ThisWorkbook.Sheets("Kategoriler")
 sonSatir = kategori.Cells(kategori.Rows.Count, "A").End(xlUp).Row

 cmbKategori.Clear
 For i = 2 To sonSatir
 cmbKategori.AddItem kategori.Cells(i, "A").Value
 Next i
End Sub

Bu yöntemle Kategoriler sayfasına yeni kategori eklediğinizde, form açıldığında otomatik listeye düşer; kodu hiç değiştirmeniz gerekmez.

9. Adım 6: Düzenleme ve Silme

Sadece ekleme yetmez, çoğu programda kullanıcı önceki kayıtları görmek, düzenlemek ve silmek ister. Form üzerinde bir ListBox kullanarak son N kaydı listeleyebilirsiniz:

Private Sub UserForm_Initialize()
 Dim arsiv As Worksheet
 Set arsiv = ThisWorkbook.Sheets("Kayitlar")

 lstKayitlar.ColumnCount = 5
 lstKayitlar.ColumnWidths = "100;150;100;100;80"
 lstKayitlar.RowSource = "Kayitlar!A2:E100"
End Sub

Liste üzerinde bir kayda çift tıklandığında formdaki alanlara doldurma:

Private Sub lstKayitlar_DblClick(...)
 If lstKayitlar.ListIndex = -1 Then Exit Sub
 txtMusteriAd.Value = lstKayitlar.List(lstKayitlar.ListIndex, 1)
 txtTelefon.Value = lstKayitlar.List(lstKayitlar.ListIndex, 2)
 cmbKategori.Value = lstKayitlar.List(lstKayitlar.ListIndex, 3)
 txtTutar.Value = lstKayitlar.List(lstKayitlar.ListIndex, 4)
End Sub
UserForm üzerinde ListBox kayıt listesi beş sütun başlık dört satır kayıt altta Düzenle Sil butonları yönetim arayüzü

10. Adım 7: Dosya Yönetimi ve Yedekleme

Sub OtomatikYedek()
 Dim yol As String, dosyaAd As String
 yol = ThisWorkbook.Path & "Yedekler"
 dosyaAd = "Yedek_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsm"

 ' Yedek klasörünü oluştur (yoksa)
 If Dir(yol, vbDirectory) = "" Then MkDir yol

 ThisWorkbook.SaveCopyAs yol & dosyaAd
End Sub

Bu makro ThisWorkbook modülündeki Workbook_BeforeClose olayına bağlanırsa dosya her kapatılışta otomatik yedek alır.

11. Adım 8: Dış Sistemle İletişim

Excel programının dış dünyayla bağlantı kurabildiği başlıca kanallar:

  • Outlook ile mail: CDO veya Outlook nesnesi üzerinden e-posta gönderme
  • Veritabanı: ADODB ile SQL Server, MySQL, Access veritabanına bağlanma
  • Web API: XMLHTTP nesnesi ile REST API çağırma; döviz kuru, hava durumu vb.
  • Dosya sistemi: CSV, TXT, JSON dosyalarını okuma/yazma
  • Power Query bağlantısı: Daha modern veri bağlantısı için Power Query tercih edilir; VBA ile yenilenebilir

12. Performans ve Bakım İpuçları

  • Ekran güncelleme kapatma: Uzun döngülerde Application.ScreenUpdating = False hızı katlar
  • Hesaplamayı manuel yapma: Toplu yazma sırasında Application.Calculation = xlCalculationManual tercih edilir
  • Olay tetikleme kapatma: Veri yazarken sayfa olaylarının tetiklenmesini istemiyorsanız Application.EnableEvents = False
  • Hata yakalama: Her makroda On Error GoTo ile hatayı yönetin; kullanıcı çökmüş Excel görmesin
  • Modülleri konuya göre ayırın: KayitIslemleri, RaporIslemleri, YardimciFonksiyonlar gibi anlamlı modüllerle bakım kolaylaşır
  • Versiyon kontrolü: Önemli güncellemelerde dosyayı v1, v2 gibi numaralandırın

13. Kullanıcıya Dağıtma — Profesyonel Görünüm

Program ekibe dağıtılmadan önce şu adımlar son izlenimi belirler:

  • Çalışma kitabı yapısı korumalı (sayfa silinmesin)
  • VBA kodu görüntülemeye karşı parolalı
  • Şerit üzerinde sadece programa özel sekme görünür (kalanı gizli)
  • Dosya açılışında otomatik form çıkıyor (Workbook_Open olayında KayitForm.Show)
  • Kapanışta otomatik yedek alınıyor
  • Kısa bir kullanım kılavuzu sayfası var
Dosya açılış akış şeması xlsm ikondan Workbook Open olayı UserForm gösterimi otomatik açılma okları

14. Excel Programcılığında Yetişkin Sınır: Nereye Kadar?

Şu sınırlara yaklaşıldığında geçiş zamanı gelmiştir:

  • Aynı anda 5+ kullanıcının aynı dosyaya yazma ihtiyacı
  • 100.000+ satır veri
  • Web/mobil erişim zorunluluğu
  • Kullanıcı yetkilendirmesi (kim ne görür/ne yapar)
  • Hassas veri (KVKK, finansal denetim)

Bu noktada Power Apps, SharePoint listeleri, Microsoft Lists veya custom web uygulaması daha kalıcı bir çözüm sunar. Excel programı çoğu zaman bir "prototip" işlevi görür; iş kuralı netleştikten sonra ölçeklenebilir bir platforma taşınır.

15. Tablo Programından Uygulamaya

Excel'i tablo programı olarak değil, küçük bir kurumsal uygulama platformu olarak kullanmak VBA, UserForm, hata yönetimi, modül tasarımı ve dosya-sistem entegrasyonu gibi konuların sistemli yerleşmesini gerektirir; bu temel olmadan yazılan kod kısa zamanda bakım yüküne dönüşür.

Bu konuları gerçek uygulama senaryolarıyla işleyen Excel VBA eğitim programı kod tarafında doğru yapıyı kurar; raporlama ve veri yönetimi temellerini önce sağlamlaştırmak isteyenler için Excel kursu uygun bir başlangıçtır.