on error komutu sadece 1 kez mi çalışır?

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
aşağıdaki örnek kodda, başka bir excel belgesini faal hale getirmesi gerekiyor; ama o dosya açık olmadığı için, hata vermesi gerekir, on error ile, "dosya bulunamadı" iletisi çıkıyor; ama döngüye bağlandığı zaman, yani aynı belgeye veya açık olmayan başka bir belgeye tekrar ulaşmaya çalıştığında "dosya bulunamadı" uyarısını vermiyor, hata veriyor.

on error komutu sadece 1 kez mi çalışır, bunu aynı kod içinde olabilecek 2. veya daha fazla olabilecek hatalarda nasıl kullanırız. Teşekkürler, iyi çalışmalar..


Sub dene()

On Error GoTo 2

For a = 1 To 3
Windows("kitap9.xls").Activate
GoTo 3
2 MsgBox "dosya bulunamadı.."
3 Next

End Sub
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
Evet On Error komutu bir prosedür içinde sadece bir kere çalışır

Ancak yapmak istediğiniz şeye bakınca kodlarınızın doğru seçilmediği kanaatindeyim bence aşağıdaki gibi bir kod kullanmalısınız.


Kod:
Sub dene()
    Dim i As Integer
    Dim a As Integer
    i = Workbooks.Count
    For a = 1 To i
        If Workbooks(a).Name = "kitap9.xls" Then
            Workbooks(a).Activate
            Exit Sub
        End If
    Next
    MsgBox "Dosya bulunamadı"
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Sn. Alpi, ilginizden dolayı teşekkür ederim,

yukarıdaki kod, sadece on error komutunun birden fazla kullanılıp kullanılamayacağını sınamak için yazdığım bast bir örnek; ama buna benzer bir durum, biraz daha karışık olarak, programımda mevcut ve benim de bahsettiğim sıkıntım var. Yukarıdaki örnek kodda, on error komutunu birden fazla çalıştırabilirsek veya başka bir yöntemle, makro hata verdiği durumlarda çalışmayı sürdürürse, ben onu kendi kodlarıma uyarlamayı düşünüyorum.

Sağlıcakla..
 
Katılım
22 Haziran 2005
Mesajlar
998
Excel Vers. ve Dili
Office 2007 Türkçe
O zaman şöyle bir yöntem deneyin
İçinde On Error komutu geçen prosedürü başka bir prosedürden çağırın
Örnek:

Sub deneme()
On Error Goto 1:
'Hata veren satırlar
.
.
EndSub

sub BirdenFazlaOnErrorKullan()
for 1 to 100
deneme
next
'Bu kodları çalıştırdığınızda hataveren Deneme prosedürünü istediğiniz kadar çalıştırabilirsiniz hata ile karşılaştığında hata iletisi almazsınız.
End Sub
 

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Evet Sayın Alpi, söylediğiniz şekilde olabilir. Teşekkür ederim.
 
Üst