EXCEL KODLARI
Excel'de aynı işlemi her gün tekrar yapıyorsanız, çoğu zaman çözüm yeni bir formül değil küçük bir makrodur. Hücreyi biçimlendirme, sayfa ekleme, dosya kaydetme, mail gönderme gibi rutin işler birkaç satır Excel kodu ile otomatik hale gelir. VBA editörünü tanıtıyor, makro kaydedici ile el yazımı kod farkını gösteriyor ve günlük işlerde gerçekten kullanılan örnekleri tek tek önemlidir.
VBA (Visual Basic for Applications), Microsoft Office uygulamalarının içinde gelen bir programlama dilidir. Excel kodlarını çalıştırmak için ek bir program kurmanıza gerek yoktur; Excel'in kendisi bir VBA derleyicisi ve editörü taşır. Sadece Geliştirici (Developer) sekmesini açmak yeterlidir.
1. Geliştirici Sekmesini Açma — İlk Adım
Excel varsayılan olarak Geliştirici sekmesini gizler. Açmak için:
- Dosya > Seçenekler'e tıklayın
- Açılan pencerede sol menüden Şeridi Özelleştir'i seçin
- Sağdaki ana sekmeler listesinde Geliştirici kutusunu işaretleyin
- Tamam'a basın
Şerit üzerinde yeni bir Geliştirici sekmesi belirir. Bu sekmenin solunda iki kritik düğme bulunur: Visual Basic (VBA editörünü açar) ve Makrolar (kayıtlı makro listesini gösterir).

2. VBA Editörünü Tanımak
Editörü açmanın iki yolu var:
- Klavye kısayolu: Alt + F11 (en hızlı)
- Şeritten: Geliştirici > Visual Basic
Açılan editörün üç ana bölümü vardır:
- Project Explorer (sol üst)
- Açık olan her çalışma kitabı için bir proje görünür. Altında ThisWorkbook, sayfa kodları (Sheet1, Sheet2...) ve eklediğiniz Modüller listelenir.
- Properties (sol alt)
- Seçili nesnenin özelliklerini gösterir. UserForm tasarlarken yoğun kullanılır.
- Code Window (sağ)
- Kodların yazıldığı asıl alandır. Bir modüle çift tıkladığınızda içeriği burada açılır.

3. Modül Eklemek — Kodun Yazılacağı Yer
Yeni bir modül eklemek için:
- Project Explorer'da çalışma kitabı adına sağ tıklayın
- Açılan menüden Insert > Module seçin
- Sağ tarafta boş bir kod penceresi açılır
Tüm makrolarınız bu modülün içinde Sub ... End Sub blokları halinde durur. Bir kitapta birden fazla modül olabilir; konuya göre ayrı modüller kullanmak (KayitIslemleri, RaporIslemleri, YardimciFonksiyonlar) bakımı kolaylaştırır.
4. İlk Makro — Sub Merhaba
VBA'da her makro Sub ile başlar, End Sub ile biter. İki ifade arasındaki satırlar, makro çalıştığında sırayla yürütülür. En basit örnek:
Sub Merhaba()
MsgBox "Merhaba, Excel makrosu çalıştı."
End SubBu Makroyu Çalıştırma — Üç Yol
- Editörden F5: İmleciniz Sub satırındayken F5 tuşuna basın. Ekrana mesaj kutusu çıkar.
- Excel'den Makrolar listesi: Geliştirici > Makrolar > Merhaba > Çalıştır.
- Butona atayarak: Sayfaya buton ekleyip makroyu bağlayın; sonrasında tek tıkla çalışır.
Sub ile Function Farkı
VBA'da iki tür kod bloğu vardır:
| Tür | Görevi | Çağırma |
|---|---|---|
| Sub | İşlem yürütür, değer döndürmez | F5, buton, başka makro |
| Function | Hesaplama yapar, sonuç döndürür | Hücreden formül gibi |
Otomasyon için Sub, özel formül üretmek için Function tercih edilir.
5. Makro Kaydedici — Kod Yazmadan Başlamak
VBA'yı hiç bilmiyorsanız Makro Kaydedici öğrenmenin en hızlı yoludur. Yaptığınız her tıklamayı VBA koduna çevirir.
Kayıt Adımları
- Geliştirici > Makro Kaydet tıklayın
- Açılan kutuda makroya bir ad verin (Türkçe karakter olmadan, boşluksuz:
HucreFormatla) - İsterseniz kısayol tuşu tanımlayın (örn. Ctrl + Shift + H)
- "Makro saklansın" alanında Bu Çalışma Kitabı veya Kişisel Makro Çalışma Kitabı seçin
- Tamam — kayıt başlar
- Yapacağınız işlemleri tıklayın (hücre biçimleme, renk verme vs.)
- Bitince Geliştirici > Kaydı Durdur

Göreli Başvuru — Önemli Ayar
Geliştirici sekmesinde Göreli Başvuruları Kullan düğmesi vardır:
- Kapalı: Kaydedici "A2 hücresine yaz" gibi sabit referanslar üretir
- Açık: "Aktif hücreye yaz, bir sağa kay" gibi göreli kayıtlar tutar
Tekrar kullanılabilir makro üretmek için göreli mod genellikle daha uygundur.
Kaydedicinin Sınırları
Kaydedicinin ürettiği kod çoğu zaman:
- Gereğinden uzundur (gereksiz Select / Selection ifadeleri)
- Hata yakalama içermez
- Koşullu mantık veya döngü içermez
- Optimize değildir
Pratik kural: kaydediciyi öğrenme amaçlı kullan, kodu daha sonra elle sadeleştir. Tek satırda yapabileceğiniz işler kaydedicinin elinden çıkarken 5 satıra çıkabilir.
6. Günlük İşler İçin Pratik Excel Kodları
Aşağıdaki örnekler küçük ama gerçekten zaman kazandıran VBA makrolarıdır. Hepsini boş bir modüle yapıştırıp F5 ile çalıştırarak deneyebilirsiniz.
Örnek 1: Yeni Sayfa Ekleyip Ada Göre Adlandırma
Sub YeniSayfa()
Dim isim As String
isim = InputBox("Yeni sayfa adı:", "Sayfa Ekle")
' Kullanıcı iptal ettiyse çık
If isim = "" Then Exit Sub
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = isim
End SubInputBox kullanıcıdan ad alır; ada göre yeni sayfayı kitabın sonuna ekler. Exit Sub, iptal edildiğinde makroyu güvenle sonlandırır.
Örnek 2: Aktif Hücre Rengini ve Fontunu Değiştirme
Sub HucreBicimle()
With ActiveCell
.Font.Bold = True
.Font.Size = 14
.Font.Color = RGB(255, 255, 255) ' beyaz yazı
.Interior.Color = RGB(0, 112, 192) ' mavi arka plan
.HorizontalAlignment = xlCenter
End With
End SubWith ... End With bloğu aynı nesne üzerinde birden çok ayarı tek seferde uygulamak için kullanılır. Her satıra ActiveCell.Font.Bold = True şeklinde yazmak yerine daha okunaklı ve daha hızlı çalışan bir kalıp olur.
Örnek 3: Sütundaki Boş Hücreleri Yukarıdaki Değerle Doldurma
Sub BosluklariDoldur()
Dim sonSatir As Long, i As Long
' A sütunundaki son dolu satırı bul
sonSatir = Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To sonSatir
If Cells(i, "A").Value = "" Then
Cells(i, "A").Value = Cells(i - 1, "A").Value
End If
Next i
End SubVeri setlerinde kategori sütununu sadece ilk satırda yazma alışkanlığı raporu bozar. Bu makro A sütunundaki boş hücreleri bir üst değerle doldurarak pivot ve filtre için uygun hale getirir.
Örnek 4: Aktif Sayfayı Tarih Damgalı PDF Olarak Kaydetme
Sub PDFKaydet()
Dim yol As String
yol = ThisWorkbook.Path & "Rapor_" & Format(Date, "yyyymmdd") & ".pdf"
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=yol, _
OpenAfterPublish:=False
MsgBox "PDF kaydedildi: " & yol
End SubBu makro çalışma kitabının bulunduğu klasöre tarih damgalı bir PDF üretir. Aylık raporlama için yaygın bir kullanımdır; bir butona bağlanırsa tek tıkla rapor PDF'i hazır olur.
Örnek 5: Belirli Koşula Uyan Satırları Renklendirme
Sub StokKritikIsaretle()
Dim sonSatir As Long, i As Long
sonSatir = Cells(Rows.Count, "B").End(xlUp).Row
For i = 2 To sonSatir
If Cells(i, "B").Value < 10 Then
Range("A" & i & ":D" & i).Interior.Color = RGB(255, 230, 230)
End If
Next i
End SubB sütununda 10'un altındaki stok kayıtlarının A:D aralığını açık kırmızıya boyar. Koşullu biçimlendirme ile de yapılabilir, ama VBA çözümünün avantajı: aynı kuralı birden fazla sayfada tek tıkla uygulamak ya da daha karmaşık koşullarla zincirlemek mümkündür.
Örnek 6: Veriyi Başka Sayfaya Kopyalama
Sub SatislariOzetle()
Dim kaynak As Worksheet, hedef As Worksheet
Dim sonSatir As Long
Set kaynak = Sheets("Hareketler")
Set hedef = Sheets("Ozet")
sonSatir = kaynak.Cells(kaynak.Rows.Count, "A").End(xlUp).Row
kaynak.Range("A2:E" & sonSatir).Copy hedef.Range("A2")
MsgBox sonSatir - 1 & " satır kopyalandı."
End Subİki sayfa arasında veri taşıma en sık karşılaşılan VBA görevidir. Set deyimi nesneleri değişkene atamak için kullanılır ve kodun okunabilirliğini ciddi ölçüde artırır.

7. Kişisel Makro Çalışma Kitabı
Bir makroyu yalnızca o dosyada değil, açtığınız her Excel kitabında kullanmak isterseniz Personal Macro Workbook kullanın.
Nasıl Çalışır?
Makro kaydederken Makro şu kitapta saklansın seçeneğinde Kişisel Makro Çalışma Kitabı'nı seçtiğinizde Excel PERSONAL.XLSB adında gizli bir kitap üretir. Her Excel açıldığında bu kitap arka planda yüklenir; içindeki tüm makrolar sayfaya bağlı olmadan çalışır.
Tipik Kullanım
- Sık kullanılan biçimlendirme makroları
- Hücre temizleme, format kopyalama gibi yardımcılar
- "Önce gönderme" e-posta hazırlama
- Hızlı veri dönüşümleri
Hızlı Erişim Araç Çubuğuna eklediğinizde her Excel'de tek tıkla çalıştırılır.
8. Hata Yakalama ve Güvenli Kod
Sub GuvenliMakro()
On Error GoTo HataYonet
Dim deger As Double
deger = CDbl(InputBox("Bir sayı girin:"))
MsgBox "Karesi: " & deger ^ 2
Exit Sub
HataYonet:
MsgBox "Geçerli bir sayı girilmedi.", vbExclamation
End SubOn Error GoTo bloğu, hata oluştuğunda makronun çökmesini engeller. Kullanıcı girişi alan makrolarda mutlaka kullanılmalıdır. Exit Sub satırı, normal akışın hata bloğuna düşmesini önler.
9. Makro Güvenliği
Makro içeren bir kitabı (.xlsm uzantılı) açtığınızda Excel sarı bir güvenlik uyarısı gösterir: "Makrolar devre dışı bırakıldı. Etkinleştir." Bu davranış normaldir.
Güvenlik Stratejisi
- Tanıdığınız dosyalarda İçeriği Etkinleştir'e basın
- Dış kaynaklı dosyalarda dikkatli olun, içeriği incelemeden makroya izin vermeyin
- Kurumsal güvenlik için "Güvenilir Konum" klasörü tanımlayın; o klasördeki dosyalar uyarı vermeden makro çalıştırır
- Makro içeren dosyalar .xlsm uzantısıyla kaydedilmelidir; .xlsx kaydedince makro silinir
10. VBA Öğrenirken Yapılan Sık Hatalar
- Select / Activate alışkanlığı: Kaydedicinin ürettiği
Range("A1").SelectsonraSelection.Value = 5kalıbı yerine doğrudanRange("A1").Value = 5yazılmalı - Option Explicit kullanmamak: Modülün en üstüne
Option Expliciteklemek tüm değişkenlerin tanımlanmasını zorunlu kılar; yazım hatasından gelen ince hataları en başta yakalar - Sabit hücre referansı: "A2:A100" gibi sabit aralık yerine
End(xlUp).Rowile son dolu satırı bulmak veri büyüdüğünde kodu otomatik uyumlu kılar - Set unutmak: Object türünden değişken atarken
Setşarttır;Dim sh As WorksheetsonraSet sh = Sheets("Veri") - Hata yakalamasız kod: Üretim ortamına gönderilen makro
On Errorile sarmalanmalı
11. VBA'dan Sonra Hangi Adım?
Excel kodları, tek dosyalık otomasyon için son derece etkilidir. Birden çok kaynaktan veri çekme, çoklu dosya birleştirme veya kurumsal raporlama akışı söz konusuysa Power Query ve Power Pivot daha kalıcı çözümler sunar.
Buna karşılık VBA'nın buton + makro kombinasyonu hâlâ kritikdir; kullanıcı arayüzü gerektiren küçük araçlar için en pratik yol budur. Excel'i otomasyon yönünden ciddi olarak ilerletmek için kapsamlı Excel VBA eğitimi kaydediciden bağımsız temiz kod yazma, hata yönetimi, kullanıcı formu (UserForm) tasarımı ve dosya/dış sistem entegrasyonlarını birlikte ele alır.
Daha sonra raporlama tarafını sistemli ilerletmek isteyenler için Excel eğitimi içeriği yapılandırılmış başvuru, dinamik formül ve pivot kurma mantığına odaklanır.



