【问题标题】:.SetFocus from module VBA.SetFocus 来自模块 VBA
【发布时间】: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).SetFocusScreen.ActiveControl.SetFocus

目前的结果是,如果在MsgBox中选择No,则值被清除,但焦点移动到下一个控件。

在此先感谢您提供的任何帮助。

【问题讨论】:

  • WHno 控件是否启用? (即未禁用)?

标签: vba module setfocus


【解决方案1】:

以下是否有所作为?

Sub ValidateWHNO(frm as Access.Form)

    Dim EnteredWHNO As Integer
    Dim actForm As String
    Dim deWHNO As Variant
    msg As Integer

    EnteredWHNO = frm.ActiveControl.Value
    actForm = frm.Name
    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
            frm.ActiveControl.Value = DMax("[WHno]", "tblDataEntry") + 1
        Else
            frm.ActiveControl.Value = Null
            frm![WHno].SetFocus
        End If
    End If

End Sub

您从每个表单中调用的是:

VaidateWHNO Me

代码不使用对表单的相对引用 (Screen.ActiveForm),而是直接传递表单引用并将该引用用作 .setFocus 方法的父级。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2021-09-10
    • 1970-01-01
    相关资源
    最近更新 更多