是否可以在vba中的一行上放置子或函数?

Dan*_*sch 1 vba access-vba

我试图在Access VBA中的一行上放置一个子.是否有可用于实现此目的的设置或特殊语法?

    private sub cmd_print() docmd.printout end sub 'creates an error
Run Code Online (Sandbox Code Playgroud)

VS

    private sub cmd_print() 
    docmd.printout 
    end sub
Run Code Online (Sandbox Code Playgroud)

Mat*_*don 9

从技术上讲,是的,使用指令分隔符 - 冒号:令牌:

Private Sub PrintCommand() : DoCmd.PrintOut : End Sub
Run Code Online (Sandbox Code Playgroud)

出于明显的可维护性和可读性原因,我强烈建议不要这样做.

对于某些生成的代码,某些加载项(如vbWatchDog)使用此特定布局.由于它如何挑战模块的预期结构,众所周知会导致处理代码的加载项出现问题,例如Rubberduck(我大量参与)(解析器从那时起已经更新;这不是更长的问题) - 这是因为成员属性将被存储(您需要导出模块以查看它们,VBE不显示模块和成员属性),而不是直观地,在程序范围之外:

Private Sub PrintCommand() : DoCmd.PrintOut : End Sub
Attribute PrintCommand.VB_Description = "This procedure does XYZ"
Run Code Online (Sandbox Code Playgroud)

"普通"布局看起来像这样,并不会导致问题:

Private Sub PrintCommand()
Attribute PrintCommand.VB_Description = "This procedure does XYZ"
    DoCmd.PrintOut
End Sub
Run Code Online (Sandbox Code Playgroud)

它也更容易阅读.