我试图在所有表单之间切换时保持所有表单的位置一致,但是在函数中调用代码时,MaxSize 不起作用。
这将 WindowLeft 和 WindowTop 值记录在一个表中,我在任何表单关闭之前运行它。
Function recordFormPosition(frm As Form)
On Error GoTo Error
DoCmd.SetWarnings False
'Table Field Window position
DoCmd.RunSQL "UPDATE FormPosition SET FormTop = """ & frm.WindowTop & """"
DoCmd.RunSQL "UPDATE FormPosition SET FormLeft = """ & frm.WindowLeft & """"
DoCmd.SetWarnings True
Exit Function
debug
Error:
MsgBox ("Error")
End Function
在任何 Form_Load 上调用此函数以将表单设置为记录在表中的位置
Function setFormPosition(frm As Form)
Dim db As DAO.Database
Set db = CurrentDb
Dim tp As DAO.Recordset
Dim lft As DAO.Recordset
Dim wintop As String
Dim winleft As String
'Sets location of form
wintop = "SELECT FormTop FROM FormPosition WHERE ID = 1"
winleft = "SELECT FormLeft FROM FormPosition WHERE ID = 1"
Set tp = db.OpenRecordset(wintop)
Set lft = db.OpenRecordset(winleft)
frm.DoCmd.MoveSize tp.Fields(0).Value, lft.Fields(0).Value
End Function
我用它来调用函数并传递表单变量
Call setFormPosition([Form]) or Call recordFormPosition([Form])
我的问题是这一行:
DoCmd.MoveSize tp.Fields(0).Value, lft.Fields(0).Value
我在哪里通过frm。多变的?我不断收到错误消息:参数 2 中的表达式具有无效值,但我从格式化为数字的表中传递了 2 个整数。我做了一些调试并在 msgbox 中传递了 tp.Fields(0).Value & lft.Fields(0).Value 并且可以验证它们是否返回数字,所以唯一的解释是它必须是一个焦点问题