【发布时间】:2017-06-28 22:50:23
【问题描述】:
我在 Access 中有一个包含 500 多个形状的表单,每个形状代表一个特定的记录。每个形状都有 Box1、Box2 等控件名称。在 VBA 中,我试图捕获形状名称,因此如果用户单击名为 Box502 的形状,例如它将转到记录 502。由于它是一个形状,其他方法我已使用未捕获此控件名称。如果我可以捕获该名称,我可以从中删除“Box”并获取用于访问该记录的号码。
如果我使用命令按钮而不是形状,我可以使用下面的代码并让它做我想做的事情,但也有代码可以更改形状的颜色,因此在命令按钮上不起作用。
Private Sub Box2_Click()
Dim strActiveCtl As String
strActiveCtl = Replace(Me.ActiveControl.Name, "Box", "")
DoCmd.GoToRecord acDataForm, "Form1", acGoTo, [strActiveCtl]
End Sub
如果我在形状上使用这行代码,它会抓取另一个控件,而不是我点击的控件。
单击时,我使用的是代码生成器和这行代码,但它正在捕获另一个控件,而不是我单击的内容。
Dim strActiveCtl As String
strActiveCtl = Screen.ActiveControl.Name
之所以有这些小盒子,是因为它们基本上与受监控的服务有关。大约有 550 项服务受到监控。当服务被记录为已审核时,形状会从红色变为绿色。团队也希望能够只单击形状并将其带到与其关联的服务。
【问题讨论】:
-
您使用什么方法将点击处理程序附加到框?
-
点击时我使用了代码生成器和这行代码,但它正在捕获另一个控件,而不是我点击的内容。 Dim strActiveCtl As String strActiveCtl = Screen.ActiveControl.Name
-
如果我使用命令按钮而不是形状,我可以使用下面的代码并让它做我想做的事,但也有代码可以改变形状的颜色,这样就不起作用了命令按钮。 Private Sub Box2_Click() Dim strActiveCtl As String strActiveCtl = Replace(Me.ActiveControl.Name, "Box", "") DoCmd.GoToRecord acDataForm, "Form1", acGoTo, [strActiveCtl] End Sub
-
(请用您提供的信息更新您的问题:))
-
那么你有 500 个函数叫
Box1_Click()...Box502_Click()吗?