Özellik ikonu

Visual Basic Düzenleyicisi

İndirme izni yok

Genel Bakış

Visual Basic Düzenleyicisi (Visual Basic Editor, VBE), Excel ile birlikte gelen ve VBA kodunu yazmanızı, düzenlemenizi, çalıştırmanızı ve hata ayıklamanızı sağlayan ayrı bir penceredir. Makro kaydederek oluşturduğunuz kodlar da, elle yazdığınız yordamlar, işlevler, olay yordamları ve kullanıcı formları da burada saklanır. VBA ile çalışmanın ilk adımı bu pencereyi tanımaktır.

VBE'yi açma ve Geliştirici sekmesi​

VBE'yi açmanın en hızlı yolu Excel penceresindeyken Alt+F11 tuşlarına basmaktır. Aynı tuşlar VBE açıkken sizi Excel'e geri döndürür. Şeritten açmak için Geliştirici > Kod > Visual Basic (Developer > Code > Visual Basic) komutunu kullanın.

Geliştirici sekmesini göremiyorsanız Dosya > Seçenekler > Şeridi Özelleştir (File > Options > Customize Ribbon) yolunu izleyin ve sağdaki listede Geliştirici (Developer) kutusunu işaretleyin.

Bir sayfa sekmesine sağ tıklayıp Kodu Görüntüle (View Code) seçerseniz VBE doğrudan o sayfanın kod modülüyle açılır. Makro içeren dosyayı mutlaka Excel Makro İçerebilen Çalışma Kitabı (*.xlsm) türünde kaydedin; düz .xlsx dosyasında kodlar saklanmaz.

Başlıca pencereler​

VBE'deki pencereler Görünüm (View) menüsünden açılıp kapatılır. En sık kullanılanlar şunlardır:
  • Proje Penceresi (Project Explorer, Ctrl+R): Açık çalışma kitaplarını ve içlerindeki sayfa, ThisWorkbook, modül, sınıf modülü ve UserForm öğelerini ağaç yapısında gösterir.
  • Özellikler Penceresi (Properties Window, F4): Seçili öğenin özelliklerini listeler; örneğin bir modülün ya da sayfanın Name özelliğini buradan değiştirirsiniz.
  • Kod Penceresi (Code Window, F7): Kodu yazdığınız alandır. Her modülün kendi kod penceresi vardır.
  • Hemen Penceresi (Immediate Window, Ctrl+G): Tek satırlık komutları anında çalıştırmanızı ve Debug.Print çıktısını görmenizi sağlar.
  • Yereller Penceresi (Locals Window): Çalışan yordamdaki değişkenlerin anlık değerlerini gösterir.
  • İzleme Penceresi (Watch Window): Seçtiğiniz ifadelerin değerini kod ilerledikçe izlemenizi sağlar.
  • Nesne Tarayıcısı (Object Browser, F2): Excel ve VBA kitaplıklarındaki nesneleri, özellikleri ve yöntemleri arayıp inceleyebileceğiniz kataloğdur.
Hemen Penceresi'ne yazılabilecek örnek satırlar şunlardır. Soru işareti, Print komutunun kısa yazılışıdır; satırı yazıp Enter tuşuna basınca hemen çalışır:
VBA 3 satır
? Range("A1").Value
Range("A1").Value = 5
Application.EnableEvents = True
Son satır, bir makro yarıda kesildiğinde kapalı kalan olayları yeniden açmak için işe yarar.

Modül türleri ve kodun yazılacağı yer​

Kodun nereye yazılacağı, ne zaman çalışacağını belirler. Yeni öğe eklemek için Ekle (Insert) menüsünü kullanırsınız:
  • Standart modül (Module): Ekle > Modül (Insert > Module) ile eklenir. Genel Sub yordamları ve Function işlevleri burada yazılır; makro listesinde ve düğmelere atamada bu yordamlar görünür.
  • Sayfa modülü: Her çalışma sayfasının kendi modülüdür. Worksheet_Change gibi o sayfaya ait olaylar buraya yazılır.
  • ThisWorkbook modülü: Workbook_Open gibi çalışma kitabı olayları için kullanılır.
  • Sınıf modülü (Class Module): Kendi nesne türlerinizi tanımlamak içindir.
  • UserForm: Görsel olarak tasarladığınız iletişim kutularıdır; kendi kod modülü vardır.
Bir modülü yedeklemek ya da başka dosyaya taşımak için modüle sağ tıklayıp Dosyayı Dışarı Aktar (Export File) komutunu kullanabilirsiniz. Standart modüller .bas, sınıf modülleri .cls, formlar .frm uzantısıyla kaydedilir.

Çalıştırma, hata ayıklama ve ayarlar​

İmleç bir yordamın içindeyken F5 tuşu o yordamı çalıştırır. Kodu satır satır izlemek için aşağıdaki araçlar kullanılır:
  • F8 (Adım Adım, Step Into): Her basışta bir satır çalıştırır; satırın sonucunu Yereller ve Hemen pencerelerinde görebilirsiniz.
  • Shift+F8 (Step Over): Çağrılan yordamı tek adımda geçer.
  • Ctrl+Shift+F8 (Step Out): İçinde bulunulan yordamı bitirip çağıran yere döner.
  • F9 (Kesme Noktası, Toggle Breakpoint): İmlecin bulunduğu satıra kesme noktası koyar; kod o satırda durur.
  • Ctrl+Break: Çalışan kodu keser.
  • Sıfırla (Reset): Durmuş ya da kesilmiş kodu tamamen sonlandırır.
Önemli bir ayar Araçlar > Seçenekler > Düzenleyici (Tools > Options > Editor) sekmesindeki Değişken bildirimi iste (Require Variable Declaration) kutusudur. İşaretlerseniz yeni modüllerin başına otomatik olarak Option Explicit eklenir; yanlış yazılan değişken adları çalışma sırasında değil, derleme aşamasında hata verir. Tüm modülde derleme denetimi için Hata Ayıkla > VBAProject'i Derle (Debug > Compile VBAProject) komutunu kullanabilirsiniz.

1. Standart modül ve Hemen Penceresi​

Excel'de Alt+F11 tuşlarıyla VBE'yi açın, Ekle > Modül ile yeni bir standart modül ekleyin ve aşağıdaki kodu yapıştırın. İmleci TutarHesapla yordamının içine koyup F5 tuşuna basın. Kod her satır için Adet ile Birim Fiyat'ı çarpıp Tutar sütununa yazar; aynı sonucu Hemen Penceresi'ne (Ctrl+G) de gönderir.
VBA 18 satır
Option Explicit

Sub TutarHesapla()
    ' Option Explicit nedeniyle tüm değişkenler bildirilmelidir
    Dim ws As Worksheet
    Dim son As Long
    Dim i As Long

    Set ws = ThisWorkbook.Worksheets("Satış Tutarı")
    ' A sütunundaki son dolu satırı bulur
    son = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    For i = 2 To son
        ws.Cells(i, 4).Value = ws.Cells(i, 2).Value * ws.Cells(i, 3).Value
        ' Sonuç Hemen Penceresi'ne de yazılır (Ctrl+G)
        Debug.Print ws.Cells(i, 1).Value & ": " & ws.Cells(i, 4).Value
    Next i
End Sub
Visual Basic Düzenleyicisi
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünAdetBirim FiyatTutar
2Defter1218,50222,00
3Kalem406,75270,00
4Dosya2512,00300,00
5Silgi303,2597,50
6Ataş502,50125,00
Satış TutarıExcelDepo v1.0.0
Makro çalışınca Tutar sütunu dolar; örneğin Defter satırının tutarı D2 hücresinde 222,00, Ataş satırının tutarı D6 hücresinde 125,00 olarak görünür. Aynı satırlar Hemen Penceresi'nde de listelenir. Kodun başındaki Option Explicit sayesinde bir değişken adını yanlış yazarsanız VBE sizi hemen uyarır.

2. Sayfa modülünde olay yordamı​

Bu kod standart modüle değil, sayfanın kendi modülüne yazılır. VBE'de Proje Penceresi'nde ilgili sayfaya çift tıklayın (ya da sayfa sekmesine sağ tıklayıp Kodu Görüntüle deyin) ve aşağıdaki kodu yapıştırın. B veya C sütunundaki bir değer değiştiğinde aynı satırın Tutar hücresi otomatik hesaplanır.
VBA 19 satır
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim hucre As Range
    Dim kesisim As Range

    ' Yalnız B2:C12 aralığındaki değişiklikler izlenir
    Set kesisim = Intersect(Target, Me.Range("B2:C12"))
    If kesisim Is Nothing Then Exit Sub

    On Error GoTo Temizle
    ' Tutar yazılırken olayın yeniden tetiklenmesini engeller
    Application.EnableEvents = False
    For Each hucre In kesisim.Cells
        Me.Cells(hucre.Row, 4).Value = Me.Cells(hucre.Row, 2).Value * Me.Cells(hucre.Row, 3).Value
    Next hucre

Temizle:
    ' Hata olsa bile olaylar yeniden açılır
    Application.EnableEvents = True
End Sub
Visual Basic Düzenleyicisi
Formülünü incelemek için bir hücre seçin.
ABCD
1ÜrünAdetBirim FiyatTutar
2Çay1045,00
3Kahve8120,00960,00
4Şeker2032,50
5Süt1528,00
Sipariş TakibiExcelDepo v1.0.0
Örnekte B3 hücresindeki Kahve adedi değiştirilir ve bu değişiklik olay yordamını tetikler. Yalnızca değişen satırın Tutar hücresi hesaplanır; D3 hücresinde 960,00 değeri görünür, diğer satırlara dokunulmaz. Yordamın sayfa modülünde olması gerektiğine dikkat edin: aynı kodu standart modüle yapıştırırsanız olay hiç çalışmaz.

3. Adım adım izleme için iki yordam​

Aşağıdaki kodu standart modüle yapıştırın. DurumGuncelle yordamı her ayın satışını hedefle karşılaştırması için DurumBul işlevini çağırır. İmleci DurumGuncelle içine koyup F8 tuşuyla satır satır ilerlerseniz, Görünüm > Yereller Penceresi içinde i ve sonuc değişkenlerinin nasıl değiştiğini görebilirsiniz. Doğrudan çalıştırmak için F5 yeterlidir.
VBA 25 satır
Option Explicit

Sub DurumGuncelle()
    Dim ws As Worksheet
    Dim i As Long
    Dim sonuc As String

    Set ws = ThisWorkbook.Worksheets("Aylık Hedef")
    For i = 2 To 7
        ' F8 ile ilerleyerek değişkenleri Yereller penceresinde izleyin
        sonuc = DurumBul(ws.Cells(i, 2).Value, ws.Cells(i, 3).Value)
        ws.Cells(i, 4).Value = sonuc
        Debug.Print ws.Cells(i, 1).Value & " - " & sonuc
    Next i
End Sub

Function DurumBul(ByVal satis As Double, ByVal hedef As Double) As String
    If satis > hedef Then
        DurumBul = "Hedef aşıldı"
    ElseIf satis = hedef Then
        DurumBul = "Hedefe ulaşıldı"
    Else
        DurumBul = "Hedefin altında"
    End If
End Function
Visual Basic Düzenleyicisi
Formülünü incelemek için bir hücre seçin.
ABCD
1AySatışHedefDurum
2Ocak125.000120.000Hedef aşıldı
3Şubat98.000100.000Hedefin altında
4Mart143.500140.000Hedef aşıldı
5Nisan110.000115.000Hedefin altında
6Mayıs150.000150.000Hedefe ulaşıldı
7Haziran87.50090.000Hedefin altında
Aylık HedefExcelDepo v1.0.0
Her ayın durumu Durum sütununa yazılır: Ocak için D2 hücresinde Hedef aşıldı, Şubat için D3 hücresinde Hedefin altında, Mayıs için D6 hücresinde Hedefe ulaşıldı görünür. Bir satıra F9 ile kesme noktası koyarsanız kod orada durur ve değişkenlerin değerlerini inceleyebilirsiniz. Aynı modülde birden çok yordam ve işlev bulunabilir; F5 tuşu her zaman imlecin bulunduğu yordamı çalıştırır.

Kullanırken dikkat edin​

  • Makro güvenliği: Makro içeren bir dosya açtığınızda Excel makroları varsayılan olarak devre dışı bırakabilir. Ayarlar Dosya > Seçenekler > Güven Merkezi > Güven Merkezi Ayarları > Makro Ayarları (File > Options > Trust Center > Trust Center Settings > Macro Settings) yolundadır. Kaynağını bilmediğiniz dosyalarda makroları etkinleştirmeyin.
  • Dosya türü: Kodlarınızı içeren çalışma kitabını .xlsm olarak kaydetmezseniz kodlar kaybolur. Excel .xlsx olarak kaydederken sizi bu konuda uyarır; uyarıya Evet derseniz modüller silinir.
  • Option Explicit alışkanlığı: Her modülün başına Option Explicit yazın ya da Seçenekler'den otomatik eklenmesini sağlayın. Böylece bildirilmemiş ve yanlış yazılmış değişkenler baştan yakalanır. Bu ayar var olan modüllere kendiliğinden eklenmez, yalnız yeni modüllere uygulanır.
  • Olayları kapalı bırakmayın: Olay yordamında Application.EnableEvents özelliğini False yaptıktan sonra kod hata verip durursa olaylar kapalı kalır ve hiçbir olay çalışmaz. Yordamda hata yakalama kullanın; sorun yaşarsanız Hemen Penceresi'ne Application.EnableEvents = True yazıp Enter tuşuna basarak olayları yeniden açın.
  • VBE'ye kodla erişme: Application.VBE ve VBProject nesneleriyle kod üzerinden modül eklemek ya da düzenlemek için Güven Merkezi'nde VBA proje nesne modeline erişime güven (Trust access to the VBA project object model) seçeneğinin açık olması gerekir. Bu seçenek güvenlik riski taşıdığından yalnızca gerçekten ihtiyaç duyduğunuzda açın.
  • Proje koruması: VBE'de Araçlar > VBAProject Özellikleri > Koruma (Tools > VBAProject Properties > Protection) sekmesinden projeyi parolayla kilitleyebilirsiniz. Bu koruma kodu gelişigüzel görüntülemeye karşı bir önlemdir; kesin güvenlik sağlamaz. Parolayı unutursanız kodlara erişemezsiniz, bu yüzden yedek tutun.
  • Hemen Penceresi sınırı: Hemen Penceresi sınırlı sayıda satır saklar; eski çıktılar yukarıdan silinir. Çok uzun çıktılar için sonuçları sayfaya yazmak daha güvenilirdir. Debug.Print çıktısı yalnızca geliştirme sırasında işe yarar, son kullanıcı bunu görmez.
  • İlgili konular:
    • Geliştirici sekmesi: Makro kaydetme, makro listesi ve VBE komutlarına şeritten erişim.
    • Makro Kaydet (Record Macro): Yaptığınız işlemlerden otomatik VBA kodu üretir; kodu VBE'de inceleyerek öğrenebilirsiniz.
    • Option Explicit: Değişken bildirimini zorunlu kılan modül düzeyi deyim.
    • Sub ve Function: Yordam ve işlev tanımlama deyimleri.
    • Debug.Print: Hemen Penceresi'ne çıktı yazan yöntem.
    • Worksheet_Change ve Workbook_Open: Sayfa ve çalışma kitabı olayları.
    • Application.EnableEvents: Olayları açıp kapatan özellik.
    • UserForm: VBE'de tasarlanan kullanıcı formları.
    • Kullanıcı tanımlı işlevler: Standart modülde yazıp hücrelerde kullanabileceğiniz özel işlevler; ayrıca ETOPLA ve TOPLA gibi yerleşik işlevlerle birlikte kullanılabilirler.
Örneklerdeki makroların tamamı indirilebilir Excel dosyasındadır (.xlsm). Dosyayı açtıktan sonra makroları etkinleştirin, ardından Alt + F11 ile Visual Basic Düzenleyicisi'nde kodları inceleyebilir ve Alt + F8 ile çalıştırabilirsiniz.
Yazar
ExcelDepo
İndirme sayısı
0
Gösterim
7
İlk yayın
Güncel

Puanlar

0.00 Oylama 0 İnceleme
Geri
Üst