Board logo

標題: [發問] 關於 on error resume next [打印本頁]

作者: feecshyrnd    時間: 2015-11-20 01:11     標題: 關於 on error resume next

On Error Resume Next '遇錯誤要繼續執行
Reset:
x = InputBox("請輸入預瀏覽之排程日期", , "請輸入日期 <例如 1007 1010 >")
ActiveWorkbook.FollowHyperlink "http://zipsum/fileupload/LCD6RPT/01.前排程相關資訊/00.LCD6%20前段排程%20Watch%20This%20!!/201510/LCD6%20生產排程%20與%20Watch%20This" & x & "前排版.xls"
If Err.Number <> 0 Then '若前面有發生錯誤
result = MsgBox(prompt:=Err.Description & vbCrLf & vbCrLf & "要繼續執行嗎?", _
Buttons:=vbYesNo, Title:="發生錯誤", HelpFile:=Err.HelpFile, Context:=Err.HelpContext)
GoTo Reset
If Not result = vbYes Then Exit Sub '若按 "否" 就結束
End If
End Sub

小弟的問題在於如果出現錯誤,按否應該是會結束,結果他變成無限迴圈,重覆執行inputbox
能否請各位達人幫幫忙 幫小弟修改一下  出現錯誤 按是重新執行 按否直接離開
另一問 如果檔案中有網頁的更新連結訊息,是否也會被當成是錯誤代碼 帶入 on error 中呢??
作者: owen06    時間: 2015-11-20 08:12

回復 1# feecshyrnd
  1. GoTo Reset
  2. If Not result = vbYes Then Exit Sub '若按 "否" 就結束
複製代碼
把這二句順序對調就行了,因為此寫法是先直接跳回reset:,
因此沒有執行到If Not result = vbYes Then Exit Sub '若按 "否" 就結束,
所以才會造成無限迴圈。
作者: GBKEE    時間: 2015-11-20 08:35

回復 1# feecshyrnd
程式的偵錯
vba視窗 -> 要偵錯的模組->滑鼠移到要偵錯程序中
按F8逐步執行看成是如何執行程式碼

圖示查看變數

[attach]22514[/attach]

[attach]22515[/attach]
作者: stillfish00    時間: 2015-11-20 09:43

回復 1# feecshyrnd

    If Not result = vbYes Then Exit Sub '若按 "否" 就結束
    Err.Clear     '清除 Err
    GoTo Reset
作者: feecshyrnd    時間: 2015-11-20 11:53

感謝各位的幫忙 真的沒想到只是一個順序的問題 竟然能導致無限迴圈
小弟受教了 大家太利害了 謝謝




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)