TOP

VBA-Ders 2. Hata Ayıklayıcı (Debugger)

Program kodunda hata ayıklamak için VBA ortamındaki bir araç. Bir hata ayıklayıcıyla çalışabilmek, VBA üzerine yazan herkes için hayati öneme sahiptir. Kodunuzun nasıl çalıştığını kontrol etmek ve içindeki hataları bulup düzeltmek için gereklidir.


Visual Basic Editor'yi açın (Alt+F11). içine bir modül oluşturun ve aşağıdaki kodu yazın:

 Sub LearningDebug()
    Dim A As Long, B As Long, C As Long, D As Long

    D = 0
    A = 10
    Debug.Print "A = " + Trim(Str(A))
    B = 15
    Debug.Print "B = " + Trim(Str(B))
    C = A + B
    Debug.Print "C = " + Trim(Str(C))
    C = Round(C / 5)
    Debug.Print "Divide С by 5: C = " + Trim(Str(C))  'C 5'e bölünür: C =
    C = Round(C / D) 'sıfıra bölmek imkansız olduğundan (ve D = 0) burada bir hata olacaktır.
End Sub

Ctrl+G tuşlarına bastığınızda altta Immediate penceresi görünecektir. Bu pencerede makronun çalışması sırasında değişkenlerin değerlerini değiştirebilir, VBA üzerinde daha önce modülde yazılmamış farklı kodlar çalıştırabilirsiniz.

İmleci modülün kodunun içine yerleştirip F5 tuşuna basarsanız tamamen yürütülecektir. F8 tuşuna basarsanız yalnızca bir kod satırı yürütülecektir. F8 tuşuna bir sonraki basışınızda bir sonraki kod satırı yürütülür ve bu şekilde devam eder. kodun tamamını adım adım gerçekleştirebilirsiniz. F9 butonunu kullanarak bir kesme noktası oluşturabilirsiniz. Daha sonra kodu F5 ile çalıştırırsanız, kod belirtilen satıra kadar çalışacak ve ardından duraklayacaktır. Daha sonra daha önce açıklanan F5 veya F8 tuşları kullanılarak devam edilebilir.

Koda yakından bakarsanız A, B, C, D değişkenlerine numara atandığını göreceksiniz. Debug.Print "text" satırları, değişkende ne olduğunu görmek için belirttiğimiz metni daha önce açılan Immediate penceresine yazdırır. Str(A), sayıyı metin değerine dönüştürür. Ve Trim() sağdaki ve soldaki boşlukları kaldırır. Round(С) operatörü, değeri aritmetik kurallarına göre bir tamsayıya yuvarlar (bu nedenle, hesaplamanın sonucunu Long tamsayı değişkenine atarız, bu şu anlama gelir: tam sayı olmak zorunda). Kodun sonunda, hata ayıklayıcıyı kullanarak pratik yapmak için özel olarak yanlış bir durum oluşturduk.

Kodun içinde durun ve dört kez F8 tuşuna basın. Bundan sonra yürütülecek satır sarı renkle işaretlenecektir. Farklı değişkenlerin üzerine gelin. Aynı zamanda değerlerini göreceğiniz bir açılır pencere görünecektir. Henüz değer atanmamış değişkenler sıfıra eşittir. F8'e tekrar basın. Immediate penceresinde bir satır görünecektir: A = 10 Artık Immediate penceresinde A değişkeninin değerini hemen değiştirebiliriz (örneğin, 8 olarak değiştirebiliriz). Bunu yapmak için Immediate penceresinin yeni bir satırına şunu yazın: A = 8 ve Enter tuşuna basın. Şimdi A değişkeninin üzerine gelin ve değerinin 8 olduğunu görün. Değeri üzerine gelmeden görmek için Immediate penceresinde görünmesini sağlayabilirsiniz. Bu şekilde yapılır, pencerenin boş satırına Immediate: ?A yazın ve Enter tuşuna basın. İmza? penceredeki Immediate, koddaki Debug.Print ile aynı anlama gelir. Bu şekilde yazmak daha kolay ve daha kısadır. İsteğinizin sonucunu - hemen numarayı göreceksiniz.

İmleci kodun son satırına (C = Round (C / D)) yerleştirin ve F9 tuşuna basın. Bir kesme noktası görünecektir. Aynı düğmeyle kaldırabilirsiniz ancak henüz kaldırmayacağız. F5 tuşuna basın, program tüm satırları yürütecek ve son satırda duracaktır. Immediate penceresinde değişkenlere değer atamayla ilgili mesajlar görünecektir. Kodun son satırına ulaştık. Sıfıra bölmeyi içerdiği için hata vermesi gerekir. F8'e basın ve kendiniz görün. Görüntülenen pencerede Debug'ye tıklayın. End tuşuna basarsanız programın yürütülmesi duracaktır ve biz onu bitirmek istiyoruz.

D değişkeninin değerini değiştirerek durumu düzeltebilirsiniz. Artık sıfıra eşittir. Immediate penceresinde boş bir satıra şu metni girin: D = 2 ve Enter tuşuna basın. Artık kodun son satırıyla birlikte sıfıra değil 2'ye bölüyoruz, böylece hatanın önüne geçiyoruz. F5 tuşuna bastığınızda program çalışmasını hatasız tamamlayacaktır.

Kodu değiştirmeyi deneyin ve hata ayıklayıcıyı kullanarak alıştırma yapın. İnanın hayatınızı çok kolaylaştıracak.