VBA 运行代码报错:end sub, end function或end属性后面只能出现注释,如何解决?
VBA 运行代码报错:'end sub, end function 或 end 属性后面只能出现注释',如何解决?
在 VBA 中,使用 ' 符号来添加注释,但 End Sub 、 End Function 或 End Property 语句之后不允许添加注释。如果在这些语句后面添加了注释,就会出现错误提示。
错误提示:
在 end sub, end function 或 end 属性后面只能出现注释
代码示例:
Option Explicit
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
Private Const WM_VSCROLL As Long = &H115
Private Const SB_LINEUP As Long = 0
Private Const SB_LINEDOWN As Long = 1
Private Sub UserForm_Activate()
' 启用复选框的滚动条
ComboBox1.DropDown
End Sub
Private Sub ComboBox1_MouseWheel(ByVal WHEELLINES As Long, ByVal PAGE As Long)
' 发送滚动消息给复选框
SendMessage ComboBox1.hWnd, WM_VSCROLL, IIf(WHEELLINES > 0, SB_LINEUP, SB_LINEDOWN), ByVal 0&
' 阻止进一步处理鼠标滚轮事件
Me.MouseWheel = False
End Sub 'ComboBox1_MouseWheel
解决方法:
删除 End Sub 、 End Function 或 End Property 语句后的注释。
修改后的代码:
Option Explicit
Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, ByVal lParam As LongPtr) As LongPtr
Private Const WM_VSCROLL As Long = &H115
Private Const SB_LINEUP As Long = 0
Private Const SB_LINEDOWN As Long = 1
Private Sub UserForm_Activate()
' 启用复选框的滚动条
ComboBox1.DropDown
End Sub
Private Sub ComboBox1_MouseWheel(ByVal WHEELLINES As Long, ByVal PAGE As Long)
' 发送滚动消息给复选框
SendMessage ComboBox1.hWnd, WM_VSCROLL, IIf(WHEELLINES > 0, SB_LINEUP, SB_LINEDOWN), ByVal 0&
' 阻止进一步处理鼠标滚轮事件
Me.MouseWheel = False
End Sub
注意:
- 在 VBA 中,
End Sub、End Function或End Property语句后面的注释会被忽略,并不会影响代码的运行。 - 如果需要在代码中添加注释,请将其放置在
End Sub、End Function或End Property语句之前。
希望本文能帮您解决问题。
原文地址: https://www.cveoy.top/t/topic/TtU 著作权归作者所有。请勿转载和采集!