VBA 运行代码报错:'end sub, end function 或 end 属性后面只能出现注释',如何解决?

在 VBA 中,使用 ' 符号来添加注释,但 End SubEnd FunctionEnd 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 SubEnd FunctionEnd 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 SubEnd FunctionEnd Property 语句后面的注释会被忽略,并不会影响代码的运行。
  • 如果需要在代码中添加注释,请将其放置在 End SubEnd FunctionEnd Property 语句之前。

希望本文能帮您解决问题。

VBA 运行代码报错:end sub, end function或end属性后面只能出现注释,如何解决?

原文地址: https://www.cveoy.top/t/topic/TtU 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录