excel - Access VBA - 触发组合框更改事件

标签 excel ms-access vba ms-access-2010

我一直在尝试表单设计,现在我已经构建了一个表单,它几乎完成了,只剩下一个问题了。我先解释一下:

表单绑定(bind)到“连接表”,该表只有 2 个字段 - 来自“Table1”的 ID 和来自“Table2”的 ID。基于这两个字段,我在同一表单上添加了“Table1”和“Table2”中的字段。然后我添加了 2 个选项按钮、1 个组合框和 2 个子表单。

这使我能够从每个 View (“Table1”或“Table2” View )观看连接的两个不同表中的记录。我使用选项按钮选择此 View ,这会更改组合框行源,以便您可以导航到组合框中的记录。

这是代码:

Private Sub OptButton0_Click()
        If Me.OptButtonO.Value = True Then

        Me.OptButton1.Value = False

       Me.Cmbox.RowSource = "SELECT [Table1].[Field1], [Table1].[Field2], [Table1].[Field3] FROM Table1 ORDER BY [Field1];"

      Me.Cmbox.SetFocus
      Me.Cmbox = Me.Cmbox.ItemData(0)

        End If

 End Sub

 Private Sub Cmbox_AfterUpdate()   
   If Me.OptButton0.Value = True Then

    If IsNull(Me!Cmbox) Then Exit Sub

    With Me.RecordsetClone
      .FindFirst "[Field1] = " & Me!Cmbox
      If Not .NoMatch Then
         If Me.Dirty Then Me.Dirty = False
         Me.MySubform.Width = 8280
         Me.MySubform.SourceObject = "MySubform"
         Me.Bookmark = .Bookmark
      Else
         Me.MySubform.Width = 8000
         Me.MySubform.SourceObject = ""
      End If

    End With

Me.Cmbox.SetFocus
DoCmd.Requery

End If

End Sub

此发布的代码仅适用于一个选项按钮,第二个选项按钮相同,只是相反。现在有什么问题吗?

问题是,当我通过组合框浏览记录时,单击另一个 View 的第二个选项按钮,然后返回到同一 View ,我的子表单结果与我单击另一个选项按钮时保持相同,尽管组合框 listIndex 为 0。我从组合框中选择组合框 Listindex,代码再次运行。

所以基本上 - 我需要在单击选项按钮时触发组合框更改的代码。当您单击组合框时它有效,但单击选项按钮时则无效。

我知道这很难理解,请看一下代码,有什么问题就问。任何帮助表示赞赏。

最佳答案

另一个选项:我有一个类似的问题:使用未绑定(bind)的组合框。在组合框中的“*_Change”事件中,如果我从下拉列表中选择一个值,该值就在那里;但如果我删除现有值,之前的值仍然会显示。

...

If Me.series_filter > "" Then
    lstrMetric = lstrMetric & "and X.series_name = '" & Me.series_filter & "' "
End If

...

Me.Filter = Mid(lstrMetric, 5)

...

我在表单上有一个过滤器的下拉列表:选择一个值意味着设置(或清除)过滤器。当我选择一个值时它起作用,但如果我删除它则不会清除。

我在代码开头添加了一行以提交更新:

Me.dirty = false 

当组合框被清除时,代码现在可以识别空值。这适用于我的情况 - 当然,如果您不希望将任何更新的字段写入数据库,这将是一个问题。

关于excel - Access VBA - 触发组合框更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36376433/

相关文章:

ms-access - 用记录集填充列表框并比较日期

vba - 关闭 Excel 中的工作簿并每周更改名称

excel - 从 Excel 电子表格中删除包含重复数据的行?

excel - 基于匹配行填充 Excel 列的问题

Excel VBA 对象在运行时需要错误

sql - 使用 MS Access 中另一个字段的值填充一个字段

sql - MS Access - WHERE IN 有效,但 WHERE NOT IN 失败

vba - 使用vba在excel中搜索不同的项目

excel - 如果在列中按下 Enter 键如何触发代码

excel - 将 A 列和 B 列配对,考虑不同用户的双倍值,获取 C 中的匹配数据