可能的语法错误? “期望 =” 在来自用户窗体的子调用中

Posted

技术标签:

【中文标题】可能的语法错误? “期望 =” 在来自用户窗体的子调用中【英文标题】:Possible syntax mistake? "Expecting =" In a Sub call from a UserForm 【发布时间】:2020-03-17 16:01:14 【问题描述】:

我想调用一个我声明的 Sub,它给出了一个编译错误,说它需要一个 =。 Sub 调用在 UserForm_Initialize 事件过程中。 代码如下。

在一个模块中:

Public Sub FillCb(Ar() As String, Cb As ComboBox)
    Cb.Clear
    For I = 1 To Application.CountA(Ar)
        Cb.AddItem (Ar(I))
    Next I
End Sub

在用户窗体代码中:

Private Sub UserForm_Initialize()
    LblDate.Caption = Date
    FillCb(LibrosNoPrestados, CbLibro)
End Sub

这段代码给了我错误。 我使用调试器逐行分析了代码,并在 Initialize 事件中注释了 las 行,到目前为止它工作正常。该错误是在编译时抛出的

FillCb(LibrosNoPrestados, CbLibro)

这里不需要其余的代码,因为正如我所说的,它可以正常工作,但是最后一行中的语法一定是错误的,我看不到错误。

【问题讨论】:

去掉FillCb调用上的括号。 【参考方案1】:

VBA“功能”。如果你调用一个没有“Call”关键字的子例程,那么不要使用括号,如果你使用“Call”关键字,那么你需要括号。

例如 Call FillCb(LibrosNoPrestados, CbLibro)

或者

FillCb LibrosNoPrestados, CbLibro

这是微软的文档: https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/call-statement

【讨论】:

糟糕。我使用正确的语法使用股票函数,但没有意识到!非常感谢! 一个 VBA “功能” - 不,这不是 VBA 可能的 *misbehaviour 的问题,而是了解 VBA 如何处理过程参数的问题。参考文献Mathieu Guindon 对 VBA Runtime error ... 或 this 的评论

以上是关于可能的语法错误? “期望 =” 在来自用户窗体的子调用中的主要内容,如果未能解决你的问题,请参考以下文章

sql搜索错误,需要语法解释

在 Access 的子窗体中插入空白行

访问前台 MySql 后台运行时错误 7878

按键精灵,父窗口下很多子窗口怎么找想要的

window.open 打开子窗体,关闭全部的子窗体

1084:语法错误:在冒号之前期望右括号?