EXCEL PROGRAM YAPMA
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 toplama | Müşteri kayıt formu, anket sonuçları, sipariş girişi |
| Hesaplama aracı | Bordro hesaplayıcı, fiyat hesaplama, vergi simülasyonu |
| Takip sistemi | Stok takip, müşteri takip, görev takip, vardiya planlama |
| Belge üreteci | Fatura, tahsilat makbuzu, teklif, sözleşme şablonu |
| Karar destek | Senaryo analizi, kredi simülasyonu |
| Veri konsolidasyon | Birden çok dosyadan veriyi tek tabloda birleştiren araç |

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.

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 SubSayfaya 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 SubBu 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 SubBu 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 SubListe ü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
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 SubBu 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 = Falsehızı katlar - Hesaplamayı manuel yapma: Toplu yazma sırasında
Application.Calculation = xlCalculationManualtercih edilir - Olay tetikleme kapatma: Veri yazarken sayfa olaylarının tetiklenmesini istemiyorsanız
Application.EnableEvents = False - Hata yakalama: Her makroda
On Error GoToile 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_OpenolayındaKayitForm.Show) - Kapanışta otomatik yedek alınıyor
- Kısa bir kullanım kılavuzu sayfası var

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.



