1

我正在创建一个表单,并在 VBA 窗口中创建了我的第一个函数。该函数创建按钮。在“结束功能”之后输入任何内容后,我收到一个错误 - “只有评论出现在..之后”有什么问题?我是否将功能放在错误的区域?

这是我的代码:

Option Compare Database 
Option Explicit

Function MainMenuOptions()

Dim frm As String
frm = "Main"

Dim SCFormB As Control
Dim SCSearchB As Control
Dim SCReportB As Control

Set SCFormB = CreateControl(frm, acOptionButton, , , , 0.5, 0.6, 1.5, 0.55)
Set SCSearchB = CreateControl(frm, acOptionButton, , , , 0.5, 1.5, 1.5, 0.55)
Set SCReportB = CreateControl(frm, acOptionButton, , , , 0.5, 2.4, 1.5, 0.55)


End Function
4

4 回答 4

4

我最近遇到了这个问题。我正在创建一个新的 Shares/Derivatives 交易和管理应用程序,并且我在创建表单方面取得了惊人的进展,有一次,我开始为表单上控件的所有 _Click() 处理程序收到此错误. 但是,表单上某个字段的 _Enter() 处理程序并没有发生这种情况。在任何“结束”语句之后都没有多余的文字 - 完全没有!我发现,不知何故,不正确的 LINE ENDINGS 出现在“End”语句的末尾。

修复:转到每个“End”语句的末尾,点击 DELETE 直到下一个 Sub 语句出现在光标处(即,您现在将下一个过程的开始与前一个 proc 的 End 语句在同一行),然后按 ENTER 将下一个 Sub 语句放回它自己的行。这将确保您在每个事件处理程序的末尾都有正确的 CR/LF(或该编辑器/编译器所需的任何内容)。

于 2017-11-27T18:54:38.480 回答
2

显然,您的模块中有额外的代码,位于函数或子程序之外。在 VBA 编辑器中选择调试 -> 编译,它应该突出显示可以删除或修改的违规代码。

仅供参考:CreateControl使用缇(一英寸的 1440 分之一)表示左侧、顶部、宽度和高度。您可能希望将正在使用的数字乘以大约 1440。

于 2012-09-08T03:59:10.367 回答
1

如果您在 Microsoft Office 开发中心查看此错误消息,您会得到以下解释:

您将可执行代码放在过程之外。过程之外的任何非声明性行都必须以注释分隔符 (') 开头。声明性语句必须出现在第一个过程声明之前。代码执行时会忽略注释。

这意味着您可以在 Sub 或 Function 之外编写的代码类型是有限的。

于 2012-09-08T03:58:10.037 回答
0

我遇到了这个错误,解决方案很简单,但是 VBA 的调试器让我暂时忘却了。我在“End Sub”之后有额外的代码需要删除(复制和粘贴错误),但是调试器没有突出显示“End Sub”语句之后的额外代码,而是突出显示了 Sub 过程的开头,这让我认为错误出现在突出显示的子过程的开始语句和它上方的“结束子”之间,而实际上错误是在突出显示的子过程的“结束子”之后,所以我需要在突出显示的文本下方仔细查看。因此,实际上,VBA 强调了一个完全正常的子过程的开始,而不是紧随其后的问题。

就像有人在你的前门外面放了一袋垃圾,所以你一进门就走进垃圾箱,然后指着门说“嗯,我需要移动垃圾”。

于 2021-12-07T22:29:29.577 回答