Debug kullanımı

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,103
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Merhabalar

Sitede araştırdım ama debug hakkında detaylı bir bilgiye ulaşamadım.Makroların çözümünde debug önemli bir yer tutuyor.Bu yüzden debug'u (nedir,hangi kısımlardan oluşur,nasıl kullanılır,kısa yolları nedir.....) makrolar kısmında herhangi bir yere sabitliyerek tam olarak açıklamak mümkün mü? Açıklama içine resimler ve örnek tablolar eklemeye de dikkat edilmeli.
İlgilenenlere teşekkür.
 
Katılım
24 Mart 2008
Mesajlar
468
Excel Vers. ve Dili
2007TR - 2010TR
kelime anlamı ayırmak, arındırmaktır.
Yazdığınız kodlarda hatalar oluşması halinde sistem tarafından otomatik olarak hatalı satırın ayıklanması için yol gösterici konumunda kullanılır. Bu mesajı devre dışı bırakabilmek için çeşitli kodlar kullanılabilir ancak bu yöntem programın doğru çalışmasını sağlamayacaktır.

Umarım doğru anlamışımdır.

Bilginize,

İyi çalışmalar.
 
Katılım
21 Ekim 2008
Mesajlar
2,323
Excel Vers. ve Dili
Office 2013 - Eng

Debuging yapabilmek icin genelde kodlar uzerinde tecrubeniz olmasi gerekir fakat basit anlamda neler yapabilirsiniz seklinde bir anlatmaya calisayim. Oncelikle bir kodunuzda hata varsa bu hata ile ilgili bir hata mesaji alacaksiniz demektir. Bu hata mesajinda debug butonuna basarsaniz Kodu hatalardan arindirmak istediginiz istegini gondermis olursunuz ve Visual Basic Editorunuz sizi hatali satiri isaretlemek (highlight) kaydi ile hatali satira goturecektir.

Ayrica vb editorunde bir degisken uzerinde mouse tutarsaniz o satirin degerini gormenize imkan tanimaktadir, bu durumda hatayi cozmenizdeki en iyi silahlarinizdan birisi olacaktir. Debug butonuna bastiginizda hatali satir uzerinde ilk bu islemi yapmak genelde hatanin cozum yolunu size gosterebilmektedir.



Ornek olmasi amacli yukaridaki hatayi inceleyelim, macromuz calistiginda dDate = Sheet1.Range("A1") satirinda hata vermis hatanin sebebini mouse`umuzu uzerinde tuttugumuzda gorebiliyoruz; dDate adli degiskenimizi daha onceki satirda tarih olarak atamistik fakat A1 hucresi icerisinde suan "m" harfi bulunmakta.

O halde Kodumuzu "A1" degeri tarih ise su sekilde gibisinde bir tabir ekleyerek kullanmamiz gerekir.


Cozume ulasmis ornegimizde gordugunuz uzere IsDate kullanarak bir if ifadesi icerisinde kriter olan hucremizin degerine bakarak islemi yap seklinde bir kod yazarak kodumuzdaki hatayi cozmus olduk.

Mouse ile degiskenlerin degerlerini gorebilmek icin kodunuzu calistirmaniz gereklidir. Bunu F8 ile satir satir yaparak degisimleri gozleyerek yani satir satir kodunuzu calistirarak yapabileceginiz gibi F9 ile kodun duracagi yeri belirleyerek (breakpoint) F9`a *bastiginiz satira kadar olan bolumlerin calismasini saglayarakta yapabilirsiniz.


Yukaridaki resimde breakpoint konulmus bir kod ornegi goruyorsunuz, kodunuza breakpoint koydugunuzda ornekteki gibi kodun durmasi gereken satir kirmizi ile isaretlenecektir.

Bir diger nokta da immediate penceresi ile ilgili olabilir, immediate penceresi vb editorunuzde Ctrl + G tuslari kombinasyonu yahuut view menusunden aktif ederek ulasabileceginiz bir penceredir. anlik olarak bir kodu calistirma imkani vermektedir.

Immediate penceresinde bir kodu calistirmak icin basina "?" koyarak sonucunu alabilirsiniz. Ornegin aktif olan hucrenin adres bilgisini sorgulayalim.

Kod:
?ActiveCell.Address
$A$1
Sorgumuzu ?ActiveCell.Address seklinde yaptiktan sonra immediate penceresinde enter tusuna basarsak hemen alt satirina sonuc cikmasini saglayabiliriz, usteki kod testimizde de alt satirda $A$1 sonucunun alt satirda ciktigini goruyoruz.

Ayrica dogru calisan bolumlerin anlasilabilmesi icin debug.print komutunu da kullanabilirsiniz, Bu sekilde kodunuzdaki calisan bolumler immediate penceresi uzerinde listelenecektir.

Kod:
'
' Kodlariniz
'
Debug.Print "Ilk Kisim Tamamlandi.."
Basit bir sekilde kodunuzu bir kritere baglayarak o kriterin gerceklesme durumuna gore dbug penceresine yonlendirebilirsiniz, bunu debug.assert kodu ile yapiyoruz. bir degisken atayip bu degisken 100 degerini gectiginde hata versin ve hataya bizi yonlendirsin istersek debug.assert kullanabiliriz, ornek olarak;


Kod:
Sub MyMakro()
Dim x As Long
X = 101
Debug.Assert (x < 100)
End Sub
Izleme penceresini de benzeri sekilde belirli bir degisken icin kriterler belirleyerek kullanabiliriz. izleme yapmanin yani sira Kriter dogrulandiginda kodu durdurma yahut alttaki ornegimizde oldugu gibi deger degistiginde kodu durdurma gibi islemlerde yapabilirsiniz..

 

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,103
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Teşekkürler sayın Mustafaine,

Konuyu açmamdaki amaç zaten bu yazı esas alınarak daha da geliştirilmesiydi.Google arattığımda http://www.excel.web.tr bu konuda gözükmüyordu.Bu konunun tek elden yeniden derlenmesi hem siteye hem de kullanıcılara avantaj getirecektir
 
Son düzenleme:
Katılım
21 Ekim 2008
Mesajlar
2,323
Excel Vers. ve Dili
Office 2013 - Eng
Hani biraz tecrube isi debug kullanmak yahut yonetmek; aslinda buradaki yazdiklarim genel bir kullanici icin yeterli diye dusunuyorum ama arkadaslarin yinede ekleyecegi birseyler olabilir tabiiki.
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,541
Excel Vers. ve Dili
Excel 2010 - Türkçe
Teşekkürler sayın Mustafaine,

Konuyu açmamdaki amaç zaten bu yazı esas alınarak daha da geliştirilmesiydi.Google arattığımda http://www.excel.web.tr bu konuda gözükmüyordu.Bu konunun tek elden yeniden derlenmesi hem siteye hem de kullanıcılara avantaj getirecektir
Güzel düşünce. Teşekkürler.
Yaklaşık bir saat önce açılan bu konu artık Google aramalarında çıkmaya başladı bile.

Google da ;
"debug kullanımı excel" şeklinde aradığınızda bu konunun linki birinci sayfa sonuçlarında çıkmaktadır.
 
Katılım
21 Ekim 2008
Mesajlar
2,323
Excel Vers. ve Dili
Office 2013 - Eng
Güzel düşünce. Teşekkürler.
Yaklaşık bir saat önce açılan bu konu artık Google aramalarında çıkmaya başladı bile.

Google da ;
"debug kullanımı excel" şeklinde aradığınızda bu konunun linki birinci sayfa sonuçlarında çıkmaktadır.
Huseyin Bey, cok guzel indeksliyor excel.web.tr gercekten elinize saglik, ben kim bilir ne zaman yazmistim bunu ama ilk sayfalarda degil benim sitem.
 

Hüseyin

Administrator
Yönetici
Admin
Katılım
2 Haziran 2004
Mesajlar
3,541
Excel Vers. ve Dili
Excel 2010 - Türkçe
Huseyin Bey, cok guzel indeksliyor excel.web.tr gercekten elinize saglik, ben kim bilir ne zaman yazmistim bunu ama ilk sayfalarda degil benim sitem.
Sizin gibi üstadların ve tüm üyelerimizin katkısı ile paylaşımın üst seviyede olduğu forumumuz gerçekten Google nezdinde de çok değerli kabul ediliyor.

An be an Google robotları siteye eklenen mesajları hemen indexliyorlar.

Katkısı olan herkese teşekkürler...
 
Üst