今天分享一下定制模块行为的常用语句

(1) Option Explicit
作用:强制对模块内所有变量进行声明,减少潜在的错误;
(2) Option Private Module
作用:标记模块为私有,仅对同一工程中的其他模块有用,在宏对话框中不显示。
Application.DisplayAlerts = False ' 屏蔽警告框Sub Example()MyFunction() ' 在宏对话框中看不到此子程序End SubFunction MyFunction()Option Private Module ' 模块私有,其他模块可见Debug.Print "Private"End Function
(3) Option Compare Text
作用:字符串不区分大小写
Sub Example()Dim s1 As String, s2 As Strings1 = "Apple"s2 = "apple"' 比较不区分大小写If s1 = s2 Then 'OptionCompareText定义时视为相等,不区分大小写Debug.Print "相等"elseDebug.Print "不相等" 'optionComparetext未定义时,区分大小写。End IfEnd Sub
(4) Option Base 1
作用:指定数组的第一个下标为1。
Sub Example()Dim arr(1 To 3, 1 To 2)For i = 1 To 3For j = 1 To 2arr(i, j) = i * jNext jDebug.Print "第 " & i & " 行: " & arr(i, 1) & ", " & arr(i, 2)Next iend sub
(5) On Error Resume Next
作用:忽略错误继续执行VBA代码,避免出现错误消息
(6) On Error GoTo ErrorHandler
作用:当错误发生时跳转到过程中的某个位置
(7) On Error GoTo 0
作用:恢复正常的错误提示
(8) Application.DisplayAlerts=False/True
作用:在程序执行过程中隐藏警告框,当为True时,不隐藏警告框。
(9) Application.ScreenUpdating=False/True
作用:控制屏幕在程序运行中是否刷新。
Sub Example()Dim i As IntegerApplication.ScreenUpdating = False ' 关闭屏幕刷新Application.DisplayAlerts = FalseFor i = 1 To 5Sleep 0.2 ' 模拟批量处理Debug.Print "已处理第 " & i & " 个项目"Next iApplication.ScreenUpdating = True ' 打开屏幕刷新Application.DisplayAlerts = FalseWaitUntilUpdate '假设有一个自定义函数end sub
(10) Application.Enable.CancelKey=xlDisabled
作用:禁用 Ctrl+Break 中止运行的功能。
Sub Example()Dim i As IntegerApplication rowLimit = 10For i = 1 To 20Sleep 0.2If i > rowLimit ThenBreakEnd IfNext iApplication.EnableCancelableKey = xlDisabled ' 禁用 Ctrl+Breakend sub'当达到第10行时,Break会被启用(因为xlDisabled为默认值),程序继续运行
夜雨聆风