EXCEL KODLARI

Excel yeşil X logosu yanında Sub Merhaba End Sub kısa VBA kod bloğu kart üzerinde

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:

  1. Dosya > Seçenekler'e tıklayın
  2. Açılan pencerede sol menüden Şeridi Özelleştir'i seçin
  3. Sağdaki ana sekmeler listesinde Geliştirici kutusunu işaretleyin
  4. 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).

Şeridi Özelleştir diyaloğunda sağ panelde Geliştirici onay kutusu işaretli vurgulu sade arayüz

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.
VBA editörü üç panelli düzen şeması Project Explorer sol üst Properties sol alt Code Window sağda

3. Modül Eklemek — Kodun Yazılacağı Yer

Yeni bir modül eklemek için:

  1. Project Explorer'da çalışma kitabı adına sağ tıklayın
  2. Açılan menüden Insert > Module seçin
  3. 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 Sub

Bu Makroyu Çalıştırma — Üç Yol

  1. Editörden F5: İmleciniz Sub satırındayken F5 tuşuna basın. Ekrana mesaj kutusu çıkar.
  2. Excel'den Makrolar listesi: Geliştirici > Makrolar > Merhaba > Çalıştır.
  3. 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ürGöreviÇağırma
Subİşlem yürütür, değer döndürmezF5, buton, başka makro
FunctionHesaplama yapar, sonuç döndürürHü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ı

  1. Geliştirici > Makro Kaydet tıklayın
  2. Açılan kutuda makroya bir ad verin (Türkçe karakter olmadan, boşluksuz: HucreFormatla)
  3. İsterseniz kısayol tuşu tanımlayın (örn. Ctrl + Shift + H)
  4. "Makro saklansın" alanında Bu Çalışma Kitabı veya Kişisel Makro Çalışma Kitabı seçin
  5. Tamam — kayıt başlar
  6. Yapacağınız işlemleri tıklayın (hücre biçimleme, renk verme vs.)
  7. Bitince Geliştirici > Kaydı Durdur
Makro Kaydet düğmesi kırmızı kayıt noktası ve Göreli Başvuruları Kullan iki butonun şerit görünümü

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 Sub

InputBox 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 Sub

With ... 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 Sub

Veri 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 Sub

Bu 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 Sub

B 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.

Altı ayrı VBA Sub makro kart kompozisyonu YeniSayfa HucreBicimle BosluklariDoldur PDFKaydet StokKritikIsaretle SatislariOzetle

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 Sub

On 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").Select sonra Selection.Value = 5 kalıbı yerine doğrudan Range("A1").Value = 5 yazılmalı
  • Option Explicit kullanmamak: Modülün en üstüne Option Explicit eklemek 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).Row ile 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 Worksheet sonra Set sh = Sheets("Veri")
  • Hata yakalamasız kod: Üretim ortamına gönderilen makro On Error ile 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.