在存储为变量的表单上调用.setFocus时出错

问题描述 投票:1回答:1

我有一个Access应用程序,其中包含几个子表单,其中包含从不同来源提取的不同类型的数据。我有一个按钮位于主窗体的顶部,根据当前选择的子窗体,它将执行不同的操作。我一直在尝试重构这个按钮调用的Select语句,以便没有那么多重复的代码。

有效的旧代码:

    Dim frm as Access.Form

    Select Case mainForm.tabLists.value
        Case List1.PageIndex
             set frm = subForm1.Form
             subForm1.setFocus
        Case List2.PageIndex
             set frm = subForm2.Form
             subForm2.setFocus
        Case List3.PageIndex
             set frm = subForm3.Form
             subForm3.setFocus
    End Select

产生“RunTime错误2449,表达式中存在无效方法”的新代码:

    Dim frm as Access.Form

    Select Case mainForm.tabLists.value
        Case List1.PageIndex
             set frm = subForm1.Form
        Case List2.PageIndex
             set frm = subForm2.Form
        Case List3.PageIndex
             set frm = subForm3.Form
    End Select

    frm.setFocus

调试运行时错误指向

frm.setFocus

但我不确定为什么它不起作用。将“frm”设置为监视变量并单步执行代码表明正在正确分配,而在较旧的代码中,“frm”在Select语句之后的其他操作中使用。

vba forms ms-access
1个回答
1
投票

你可以这样做:

Dim sfrm As Subform

Select Case mainForm.tabLists.value
    Case List1.PageIndex
         Set sfrm = Me!subForm1
    Case List2.PageIndex
         Set sfrm = Me!subForm2
    Case List3.PageIndex
         Set sfrm = Me!subForm3
End Select

sfrm.SetFocus
© www.soinside.com 2019 - 2024. All rights reserved.