2013-03-21 25 views
8

On Error GoTo 0 sıfırlama hatası işleminin yapıldığı izlenimi altındaydım.Hata On Goto 0 hata yakalamayı sıfırlamıyor

Peki neden On error resume next aşağıdaki gibi kayıt olmuyor?

Sub GetAction() 
Dim WB As Workbook 
Set WB = ThisWorkbook 

On Error GoTo endbit: 
'raise an error 
Err.Raise 69 
Exit Sub 
endbit: 
On Error GoTo 0 '<<<reset error handling? 

On Error Resume Next 
WB.Sheets("x").Columns("D:T").AutoFit 
MsgBox "ignored error successfully and resumed next"  

End Sub 
+0

@Olle Sjögren Bu yazıya Excel'e özgü bir çok şey var, bu yüzden genel VBA etiketinin diğer tüm Office ürünleriyle ilgili soruları yanıtlamak için yeniden yazmadan uygun olduğunu düşünmüyorum. Powerpoint'e özgü benzer bir sorunu olan bir kişiyi kopyalamak adaletsizdir. – Fionnuala

+0

BTW daha genel bir soruya atıfta bulunulduğu gibi, http://stackoverflow.com/questions/14158901/difference-between-on-error-goto-0-and-on-error-goto-1-vba/14159999#14159999 adresinde yer almaktadır. altında. – Fionnuala

+0

@Remou Tamam, sorun değil. Sadece 'GoTo -1' Hatası 'yanıtının [tag: VBA] etiketini garantilemek için yeterli olduğunu hissettim. –

cevap

6

Sen hata yakalama sıfırlamak için On Error GoTo -1veyaErr.Clear kullanmak gerekir.

Onay this answer Daha ayrıntılı bir açıklama için birkaç ay önce gönderdim.

+0

+1 teşekkürler – whytheq

+1

lol - bu bağlantı spot-on gerçekten benim soru bir kopyası gibi görünüyor - Ben oy Diğer yanıtınıza bir referansla kapatmak için – whytheq

+0

'Err.Clear' başka bir hata işleyicisinin kurulmasına izin vermiyor gibi görünüyor. Sadece gerekli sonuçları (hata varsa, birkaç satırlık satırı atlama ve sonra tekrar benzer bir şey yapmadan), başka bir "Hata ..." ayarını yapmadan önce "Hatada Gitme" -1 ile aldım. /stackoverflow.com/questions/11998836/excel-vba-on-error-goto-statement-not-working-inside-for-loop/31543829#31543829 –