我试图在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)
从技术上讲,是的,使用指令分隔符 - 冒号:令牌:
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)
它也更容易阅读.