我有一个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语句之后的其他操作中使用。
你可以这样做:
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