首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自VBA模块的.SetFocus

来自VBA模块的.SetFocus
EN

Stack Overflow用户
提问于 2014-06-27 17:28:11
回答 1查看 1.2K关注 0票数 1

我正在尝试在更新后以表单的形式设置焦点。当我在forms类模块中这样做时,我没有问题。但是,我需要用几个表单来完成这个任务,所以我尝试在模块中编写它。我的问题是,除非我硬编码类模块中的表单名,否则我无法让.SetFocus工作。WHno是我试图设置焦点的控件的名称。

我尝试了许多选择,但似乎没有一个可行。

这是潜艇。除了.SetFocus过程之外,一切都运行得很好。

代码语言:javascript
复制
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.SetFocusForms(actForm).Controls(WHno).SetFocusScreen.ActiveControl.SetFocus

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

感谢您提供的任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-27 21:41:59

下面的内容会有什么不同吗?

代码语言:javascript
复制
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

你在每一份表格上的要求是:

代码语言:javascript
复制
VaidateWHNO Me

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24457624

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档