分享

他山之石——VBA的程序终止、退出语句块、分支及错误处理(End, exit, on error g...

 旅行中的甘蓝 2020-04-09

2018-06-19

  • 预见未来to50 

    码龄13年

在VBA编程中,终止、退出及错误处理都是很有用的程序控制方法。
那么,有哪些具体的方法呢?
看到别人的培训资料里已有所总结,这里借花献佛一下。

代码1: 程序终止及退出方法

  1. Option Explicit
  2. '一、END语句
  3. '作用:强制退出所有正在运行的程序。
  4. '二、Exit语句
  5. '退出指定的语句
  6. '1、Exit Sub
  7. Sub e1()
  8. Dim x As Integer
  9. For x = 1 To 100
  10. Cells(1, 1) = x
  11. If x = 5 Then
  12. Exit Sub
  13. End If
  14. Next x
  15. Range('b1') = 100
  16. End Sub
  17. '2、Exit function
  18. Function ff()
  19. Dim x As Integer
  20. For x = 1 To 100
  21. If x = 5 Then
  22. Exit Function
  23. End If
  24. Next x
  25. ff = 100
  26. End Function
  27. '3、Exit for
  28. Sub e2()
  29. Dim x As Integer
  30. For x = 1 To 100
  31. Cells(1, 1) = x
  32. If x = 5 Then
  33. Exit For
  34. End If
  35. Next x
  36. Range('b1') = 100
  37. End Sub
  38. '4、Exit do
  39. Sub e3()
  40. Dim x As Integer
  41. Do
  42. x = x + 1
  43. Cells(1, 1) = x
  44. If x = 5 Then
  45. Exit Do
  46. End If
  47. Loop Until x = 100
  48. Range('b1') = 100
  49. End Sub

代码2: 分支及跳转方法

  1. Option Explicit
  2. 'Goto语句,跳转到指定的地方
  3. Sub t1()
  4. Dim x As Integer
  5. Dim sr
  6. 100:
  7. sr = Application.InputBox('请输入数字', '输入提示')
  8. If Len(sr) = 0 Or Len(sr) = 5 Then GoTo 100
  9. End Sub
  10. 'gosub..return ,跳过去,再跳回来
  11. Sub t2()
  12. Dim x As Integer
  13. For x = 1 To 10
  14. If Cells(x, 1) Mod 2 = 0 Then GoSub 100
  15. Next x
  16. Exit Sub
  17. 100:
  18. Cells(x, 1) = '偶数'
  19. Return '跳到gosub 100 这一句
  20. End Sub
  21. 'on error resume next '遇到错误,跳过继续执行下一句
  22. Sub t3()
  23. On Error Resume Next
  24. Dim x As Integer
  25. For x = 1 To 10
  26. Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
  27. Next x
  28. End Sub
  29. 'on error goto '出错时跳到指定的行数
  30. Sub t4()
  31. On Error GoTo 100
  32. Dim x As Integer
  33. For x = 1 To 10
  34. Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
  35. Next x
  36. Exit Sub
  37. 100:
  38. MsgBox '在第' & x & '行出错了'
  39. End Sub
  40. 'on error goto 0 '取消错误跳转
  41. Sub t5()
  42. On Error Resume Next
  43. Dim x As Integer
  44. For x = 1 To 10
  45. If x > 5 Then On Error GoTo 0
  46. Cells(x, 3) = Cells(x, 2) * Cells(x, 1)
  47. Next x
  48. Exit Sub
  49. End Sub
'他山之石,可以攻玉!   
文章最后发布于: 2018-06-19
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多