编译错误:无效使用属性

时间:2013-05-23 17:28:12

标签: ms-access ms-access-2007 access-vba

我正在构建一个Access DB。我的VB教育是比我们需要更多的自定义数据库,而不是Access,所以它非常参差不齐。我有一个按钮,在按下时会运行以下代码。代码工作正常。问题是当我进入VB屏幕并在Debug菜单下编译时,我收到一条错误,指出“编译错误:无效使用属性。”

' Memo Line Button Script
Private Sub Memo_Line_Click()
On Error GoTo Memo_Line_Click_Err

    If Me.Dirty Then Me.Dirty = False
    Memo_Line ([Forms]![Logform]![HLCtrl]) 'error highlights ![HLCtrl]

Memo_Line_Click_Exit:
    Exit Sub

Memo_Line_Click_Err:
    MsgBox Error$
    Resume Memo_Line_Click_Exit

End Sub

Memo_Line是指公共功能。该代码列在下面。

' 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

2 个答案:

答案 0 :(得分:1)

放弃函数调用中的括号。

Memo_Line [Forms]![Logform]![HLCtrl]

如果Memo_Line返回了一个值并且您想要对该值执行某些操作,则需要使用括号。

MyVariable = Memo_Line([Forms]![Logform]![HLCtrl])
Debug.Print Memo_Line([Forms]![Logform]![HLCtrl])

实际上,由于Memo_Line没有返回值,因此可以将其设为子例程而不是函数。我不建议您进行转换,但如果您这样做,请使用其中一种方式调用它:

Memo_Line [Forms]![Logform]![HLCtrl]
Call Memo_Line([Forms]![Logform]![HLCtrl])

在示例数据库中,表单包含一个名为“Memo Line”的命令按钮。在某些情况下,Access用空格替换下划线,因此“Memo Line”变为“Memo_Line”。问题是你还有一个名为“Memo_Line”的函数。遗憾的是,Access认为您指的是命令按钮而不是此代码行中的函数:

Memo_Line ([Forms]![Logform]![HLCtrl]) 'error highlights ![HLCtrl]

将命令按钮名称更改为“cmdMemo_Line”后编译的代码没有错误。

毫无疑问,由于空间与下划线造成的名称冲突让你感到意外。我发现最好避免控件名称中的空格以及其他对象名称:tables;领域;形式;等。

答案 1 :(得分:-1)

尝试使用此代替呼叫功能

Application.Run" Memo_Line"