【发布时间】:2014-08-18 21:44:50
【问题描述】:
我正在尝试在更新后将焦点设置在表单中。当我在表单类模块中执行此操作时,我没有问题。但是,我需要以几种形式执行此操作,因此我尝试将其写入模块中。我的问题是我无法让 .SetFocus 工作,除非我在类模块中对表单名称进行硬编码。 WHno 是我要设置焦点的控件的名称。
我尝试了多种选择,但似乎都没有效果。
这是潜艇。除了 .SetFocus 过程之外,一切都运行良好。
Sub ValidateWHNO()
Dim EnteredWHNO As Integer
Dim actForm As String
Dim deWHNO As Variant
msg As Integer
Dim ctrlWHNO As Control
EnteredWHNO = Screen.ActiveControl.Value
actForm = Screen.ActiveForm.Name
Set ctrlWHNO = [Forms]![frmEnterBookData]![WHno]
deWHNO = DLookup("[WHno]", "tblDataEntry", "[WHno] = " & EnteredWHNO)
If EnteredWHNO = deWHNO Then
msg = MsgBox("You have already entered " & EnteredWHNO & " as a WHNO. The next number is " & DMax("[WHno]", "tblDataEntry") + 1 & ", use this?", 4 + 64, "Already Used WHno!")
If msg = 6 Then
Screen.ActiveControl.Value = DMax("[WHno]", "tblDataEntry") + 1
Else
Screen.ActiveControl.Value = Null
ctrlWHNO.SetFocus 'CODE THAT WONT RUN
End If
End If
End Sub
我尝试了许多其他方法来设置焦点,例如:
Forms(actForm).WHno.SetFocus,
Forms(actForm).Controls(WHno).SetFocus,Screen.ActiveControl.SetFocus
目前的结果是,如果在MsgBox中选择No,则值被清除,但焦点移动到下一个控件。
在此先感谢您提供的任何帮助。
【问题讨论】:
-
WHno控件是否启用? (即未禁用)?