Database Access,选择Case ActiveControl。名称?
我在表单访问中有两个组合框(Database Access,选择Case ActiveControl。名称?,database,vba,ms-access,controls,select-case,Database,Vba,Ms Access,Controls,Select Case,我在表单访问中有两个组合框(c1,c2),带有按钮Search,如果用户从c1中选择一个值并单击Search,则应打开表单1,如果用户从c2中选择一个值并单击Search,则应打开表单2 Private Sub Commande6_Click() Select Case ActiveControl.Name Case "c1" DoCmd.OpenForm "FORM1" Case "c2" DoCmd.Op
c1
,c2
),带有按钮Search,如果用户从c1
中选择一个值并单击Search,则应打开表单1
,如果用户从c2
中选择一个值并单击Search,则应打开表单2
Private Sub Commande6_Click()
Select Case ActiveControl.Name
Case "c1"
DoCmd.OpenForm "FORM1"
Case "c2"
DoCmd.OpenForm "FORM2"
Case Else
'traitement
End Select
End Sub
如果您正在单击组合框,然后单击搜索按钮,则组合框不是最后单击的对象,因此它不是活动的-搜索按钮是(
command6
)
使用ActiveControl将不起作用。单击“搜索”时,控件转到“搜索”按钮 你可以用几种方法来处理。您可以(a)查询两个控件以检测哪一个未设置为默认值,或者(b)跟踪哪一个最后具有焦点(可能使用隐藏控件)
编辑:请参阅ashleydawgs的答案以获取代码。为什么不起作用?我不知道,当我单击按钮时,它不会显示任何内容。请在该过程开始时添加一个临时行:
MsgBox ActiveControl.Name
。然后尝试这些变化,看看它认为主动控件叫什么。解决办法应该变得非常明显。(我打赌活动控件是搜索按钮,因为那是最后一次点击。它不叫second to last ActiveControl
:)它显示“command6”是的,或者一个变量。:)虽然我会推荐这种方法(这就是为什么我不把它作为一个答案发布),但对于上一个控件,您确实有Screen.PreviousControl
。但是,如果您单击了另一个控件(不是中间的c1
也不是c2
,而是屏幕,则此答案也有效。以前的控件
不起作用)它会使thaaank工作youuuuu@ErikvonAsmuth有可能在一个案例中设置两个条件吗??
Public lastCBclicked as String
Private Sub c1_Click()
lastCBclicked = ActiveControl.Name
End Sub
Private Sub c2_Click()
lastCBclicked = ActiveControl.Name
End Sub
Private Sub Commande6_Click()
Select Case lastCBclicked
Case "c1"
DoCmd.OpenForm "FORM1"
Case "c2"
DoCmd.OpenForm "FORM2"
Case Else
'traitement
End Select
End Sub