Ms access 编译错误:属性的使用无效

Ms access 编译错误:属性的使用无效,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我有一个正在构建的访问数据库。我的VB教育是零零碎碎的,我需要定制DB,而不是Access所做的,所以它非常零碎。我有一个按钮,按下时运行以下代码。代码运行良好。问题是当我进入VB屏幕并在调试菜单下编译时,我得到一个错误,声明“编译错误:属性的无效使用” 备注行是指公共功能。下面列出了该代码 ' Copy Offer Memo Line Data to Clipboard Button Script Public Function Memo_Line(HLC) On Error GoTo Mem

我有一个正在构建的访问数据库。我的VB教育是零零碎碎的,我需要定制DB,而不是Access所做的,所以它非常零碎。我有一个按钮,按下时运行以下代码。代码运行良好。问题是当我进入VB屏幕并在调试菜单下编译时,我得到一个错误,声明“编译错误:属性的无效使用”

备注行是指公共功能。下面列出了该代码

' Copy Offer Memo Line Data to Clipboard Button Script
Public Function Memo_Line(HLC)
On Error GoTo Memo_Line_Click_Err

    DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLC & "'", , acNormal
    Call ClipBoard_SetData([Forms]![Log-Memo Line]![Memo])
    MsgBox ([Form_Log-Memo Line].[Memo] & " --- copied to Clipboard."), vbInformation, "Clipboard Details"
    DoCmd.Close acForm, "Log-Memo Line"

Memo_Line_Click_Exit:
    Exit Function

Memo_Line_Click_Err:
    MsgBox Error$
    Resume Memo_Line_Click_Exit

End Function

放弃函数调用中的括号

备忘录行[表格]![日志格式]![HLCtrl]
如果
Memo\u Line
返回了一个值,并且您想用该值做一些事情,则需要使用括号

MyVariable=Memo\u行([Forms]![Logform]![HLCtrl])
调试。打印备忘录行([Forms]![Logform]![HLCtrl])
实际上,由于
Memo\u Line
不返回值,因此可以将其作为子例程而不是函数。我不是建议您进行这种转换,但如果您这样做,请使用以下样式之一进行转换:

备忘录行[表格]![日志格式]![HLCtrl]
电话备忘录行([Forms]![Logform]![HLCtrl])
在示例数据库中,表单包含一个名为“备注行”的命令按钮。在某些情况下,Access用下划线代替空格,因此“备注行”变为“备注行”。问题是您还有一个名为“Memo\u Line”的函数。不幸的是,Access认为您指的是命令按钮,而不是此代码行中的函数:

Memo_行([Forms]![Logform]![HLCtrl])错误突出显示![HLCtrl]
在我将命令按钮名称更改为“cmdMemo\u Line”后,代码编译没有错误


毫无疑问,由空格和下划线引起的名称冲突让你大吃一惊。我发现最好避免在控件名和其他对象名中使用空格:表;领域;形式;等等。

尝试使用此函数而不是调用函数


应用程序。运行“备注行”

尝试这两个选项仍然会显示错误,但现在它会突出显示备注行而不是![HLCtrl]我已经将HLC声明为字符串形式的公共变量。我在其他功能中使用了HLC。好的,我已经把它上传到谷歌硬盘了。我已经删除了所有机密数据,并用泛型替换。我知道DB是个巨大的野兽。我现在想知道的是关于这个具体问题。这是一项正在进行的工作。为什么总是容易的事情让每个人都绊倒?谢谢你的帮助。我对“代码工作正常”这句话有点困惑,后面是一段描述,描述了它是如何由于错误而无法编译的。在VBA编辑器中,在“常规”选项卡上的
Tools>Options…
下,“按需编译”旁边是否有复选标记?这是默认值,这意味着对代码的更改将在下次运行时触发重新编译。是的,已选中。我的意思是,当我实际单击代码附加到的按钮时,代码按预期工作。当我在DB的其他部分编辑代码并选择Debug,Compile时,即出现错误。
' Copy Offer Memo Line Data to Clipboard Button Script
Public Function Memo_Line(HLC)
On Error GoTo Memo_Line_Click_Err

    DoCmd.OpenForm "Log-Memo Line", acNormal, "", "[HL#]=" & "'" & HLC & "'", , acNormal
    Call ClipBoard_SetData([Forms]![Log-Memo Line]![Memo])
    MsgBox ([Form_Log-Memo Line].[Memo] & " --- copied to Clipboard."), vbInformation, "Clipboard Details"
    DoCmd.Close acForm, "Log-Memo Line"

Memo_Line_Click_Exit:
    Exit Function

Memo_Line_Click_Err:
    MsgBox Error$
    Resume Memo_Line_Click_Exit

End Function