Ms access 如何将组合框视为指向其他表单的链接?

Ms access 如何将组合框视为指向其他表单的链接?,ms-access,combobox,vba,Ms Access,Combobox,Vba,我一直在努力修改组合框,将当前选定的项目视为指向其他表单的链接 基本工作流程简单;我希望组合框中的文本在不从列表中选择新项目时起到链接的作用。此链接将打开一个新表单,并查找相关记录。即,单击客户名称打开客户表单并显示其信息 这个问题是特定于组合框的;同样的功能也适用于文本框。将代码放入Click事件,窗体打开,转到正确的记录,轻松完成。我应该可以用组合框做同样的事情,对吗 没有。组合框上的单击事件。它说,用鼠标左键单击控件。用鼠标右键或中键单击控件不会触发此事件。,但单击时不会执行任何操作 好的

我一直在努力修改组合框,将当前选定的项目视为指向其他表单的链接

基本工作流程简单;我希望组合框中的文本在不从列表中选择新项目时起到链接的作用。此链接将打开一个新表单,并查找相关记录。即,单击客户名称打开客户表单并显示其信息

这个问题是特定于组合框的;同样的功能也适用于文本框。将代码放入Click事件,窗体打开,转到正确的记录,轻松完成。我应该可以用组合框做同样的事情,对吗

没有。组合框上的单击事件。它说,
用鼠标左键单击控件。用鼠标右键或中键单击控件不会触发此事件。
,但单击时不会执行任何操作

好的。让我们将其设置为超链接。这将触发点击事件!不。它首先尝试跟随“链接”,由于该值是一个内部主键,它不知道如何处理它。所以它会出错,而且不会有结果

现在我的尝试变得更加深奥。让我们在组合框后面隐藏一个矩形,并将代码放入它的Click事件中!不。不会流到后面的物体。让我们把它放在下拉列表的顶部!不。仍然不会触发矩形的单击事件

好的,去掉矩形。让我们尝试将代码放入组合框的MouseUp事件中。答对 了单击文本现在可以工作了。但是…现在我每次点击它都会这样。我不希望在选择其他客户时打开表单

我已经尝试过了,但当链接返回true时,我没有跟随它。那……有点用。它现在不会关闭扩展的下拉列表,您也无法调试它,因为检测代码级别较低,显示调试屏幕会使其返回false(因为下拉列表不再打开)

我尝试设置一个静态变量,使其仅在不选择新项目时跟随链接。这是非常不一致的,因为没有好的方法来确定combobox处于什么状态


将文本转换成可点击的链接应该不会这么难。如何使组合框中当前选定的项目成为链接,而不同时使组合框中的所有其他项目成为链接?我是否错过了一个事件或什么?

我运行了一个快速测试,这对我来说就像预期的那样有效:

Private Sub Combo14_Click()

Select Case Combo14
    Case Is = "Form1"
        DoCmd.OpenForm "Form1"
    Case Is = "Form2"
        DoCmd.OpenForm "Form2"
    Case Is = "Form3"
        DoCmd.OpenForm "Form3"
    Case Is = "Form4"
        DoCmd.OpenForm "Form4"
End Select

End Sub
编辑:

然后在GotFocus事件字段中也尝试此操作

Private Sub Combo14_GotFocus()

Select Case Combo14
    Case Is = "Form1"
        DoCmd.OpenForm "Form1"
    Case Is = "Form2"
        DoCmd.OpenForm "Form2"
    Case Is = "Form3"
        DoCmd.OpenForm "Form3"
    Case Is = "Form4"
        DoCmd.OpenForm "Form4"
End Select

End Sub

注意:您可能希望将焦点转移到sub结尾的其他内容。

我想我有一个解决方案,可以为您提供帮助,因为我知道您正在尝试做什么

要设置表单覆盖,请在组合框(我使用了
Combo0
)下拉区域的顶部添加一个文本框(我使用了
Text3
),使向下箭头可见

此外,我还设置了
形状轮廓
颜色的文本框属性,这样我就可以清楚地知道它是否正常工作。对于组合框-我还单击了
Arrange
-以
Send to Back
,因此它将隐藏在文本框后面

每当更改组合框时(通过单击其箭头),它也会设置文本框的值-如果需要,可以将其设置为超链接

1。显示文本框,但组合框箭头可见

2。已单击组合框箭头以显示下拉列表

3。单击文本框将在单击事件或超链接中生成代码

示例表格VBA

Private Sub Combo0_AfterUpdate()
    Debug.Print "Updated"
    Text3 = Combo0.Value
    Text3.Visible = True
End Sub

Private Sub Combo0_Click()
    Debug.Print "Clicked"
    Text3.SetFocus
End Sub

Private Sub Combo0_Enter()
    Debug.Print "Enter: " & Combo0
    Text3.Visible = False
End Sub

Private Sub Form_Current()
    Text3 = Combo0.Value
    Text3.Visible = True
    Text3.SetFocus
End Sub

这是当您选择一个项目时。我希望它能够处理已选定的项目,而不展开下拉列表。更新了答案。展开列表框时也会出现这种情况。请仔细阅读我的问题;我希望链接只在点击组合框的实际文本时才起作用。尝试跟随你正在尝试做的事情,希望你能有所启发。当用户单击组合框时,您希望如何确定用户是否只想单击或展开列表?这就是你如何知道他们想要使用当前客户或选择一个新客户的方法?当然-效果很好-如果有效,请将其标记为答案,或者对你的帖子的任何有帮助的评论或答案进行投票。有趣。我没有想到在上面放一个文本框。我必须尝试一下,看看它是如何工作的。让我们知道测试goesMy测试表明这将如何工作。不幸的是,ComboBox无法在开箱即用的情况下完成这项工作,但我想,无论什么都可以。