我正在构建一个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
答案 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"