Hata Yakalama

Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Merhaba arkadaşlar,

For döngüsü için yazdığım kodun arasına "on error goto xxx" yazıyorum ama ilk hatada "xxx"e gidiyor sonraki hatalarda gitmiyor ve hata veriyor. Bunun nedeni ne olabilir?

Kod:
On Error GoTo virmanyok
If S2.Cells(x, 2) = "virman yapılmayacak" Then GoTo virmanyok
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
Bu şekilde hata kontrolü sadece kodları yazarken denetim için kullanmalısınız.
Uygulamanızı bitirdikten sonra hata veren satırları bulup gerekli düzenlemeler mutlaka yapılmalıdır.
Uygulamanız bittiğinde hiçbir hatalı satır olmamalıdır.

Kodlarınızın hepsini yada mümkünse dosyanızı paylaşın daha doğru çözüm üretmeye çalışalım.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Hata denetimini resetlemek için aşağıdaki satırı da ilave edin, öyle çalıştırın....

C++:
On Error GoTo 0

.
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
@Haluk Bey yazdığınız kodu bir kaç farklı yere ekledim ama etkili olmadı. Benim dosyada aslında hatalı yazılan kod yok ama veriler her zaman sağlıklı olamıyor. Hata alan satırda bulunan #YOK değerinden dolayı böyle bir hata alınıyor. Benim istediğim de #YOK olan satırları for döngüsünden çıkarmak ve sonraki satıra geçmek. Yazdığım kodun bir kısmı aşağıda. Yardımcı olabilir misiniz?

Kod:
For Each sIsim In sIsimler
Set S2 = Worksheets(sIsim)
sonsatir1 = S2.Cells(Rows.Count, "A").End(3).Row
For x = 2 To sonsatir1
On Error GoTo virmanyok
If S2.Cells(x, 2) = "virman yapılmayacak" Then GoTo virmanyok
On Error GoTo 0
S1.Cells(y, 1) = sonsatir2
S1.Cells(y, 2) = "H"
*****
*****
sonsatir2 = sonsatir2 + 1
y = y + 1
virmanyok:
Next x
Next sIsim
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bilemiyorum ama şöyle bir deneyin....

C++:
    For Each sIsim In sIsimler
        Set S2 = Worksheets(sIsim)
        sonsatir1 = S2.Cells(Rows.Count, "A").End(3).Row
        For x = 2 To sonsatir1
            If S2.Cells(x, 2) = "virman yapılmayacak" Or S2.Cells(x, 2) = "#YOK" Then GoTo virmanyok
            S1.Cells(y, 1) = sonsatir2
            S1.Cells(y, 2) = "H"
            '*****
            '*****
            sonsatir2 = sonsatir2 + 1
            y = y + 1
virmanyok:
        Next x
    Next sIsim

Veya bunu;

Rich (BB code):
    For Each sIsim In sIsimler
        Set S2 = Worksheets(sIsim)
        sonsatir1 = S2.Cells(Rows.Count, "A").End(3).Row
        For x = 2 To sonsatir1
            If S2.Cells(x, 2) = "virman yapılmayacak" Or IsError(S2.Cells(x, 2)) Then GoTo virmanyok
            S1.Cells(y, 1) = sonsatir2
            S1.Cells(y, 2) = "H"
            '*****
            '*****
            sonsatir2 = sonsatir2 + 1
            y = y + 1
virmanyok:
        Next x
    Next sIsim
.
 
Son düzenleme:
Üst