【问题标题】:Access 2010 VBA how to check value of a listboxAccess 2010 VBA如何检查列表框的值
【发布时间】:2014-04-14 23:30:51
【问题描述】:

好吧,只是一个警告,我是 VBA 和 Access 的新手,但我正在全力以赴。

我有一个带有一些列表框的表单,我想做的是根据“父”列表框的选择隐藏或显示表单的某些列表框和字段。

即“位置”列表框包含许多选项,其中一个名为“加拿大”

当用户选择“加拿大”时,我希望表单显示另一个名为“省”的框

当前代码:

Private Sub Form_Load()
MsgBox "Form Loaded"
    If Forms![Tickets]![location] = "Canada" Then
    MsgBox "location is Canada!"
End If
End Sub

msgBox 在 if 语句中只是为了让我查看 if 语句是否被触发,每当我发现这一点时,我都会将其更改为我想要执行的代码。

我以为我知道如何从 VBA 引用表单上的控件,但我可能做错了。我来自 PHP/Mysql 背景,所以我还在掌握这门语言。

干杯

【问题讨论】:

  • 好的,我看了一下,但对我来说有点模糊。我有列表框等,该事件是我正在努力解决的问题。我已经能够很好地触发事件,只要它在我的 If 语句之外,就不会满足 if 语句本身来弹出消息框。我想我试图错误地选择控件?
  • 尝试了以下代码: Private Sub location_Click() MsgBox "Description was clicked!" If Trim(Me.location) = "Detachment Page" Then MsgBox "Description was clicked!" End If End Sub 与您的事件类似: Private Sub cboNode_GotFocus() If Trim(Me.cboLocation & "") = vbNullString Then MsgBox "请选择位置" Me.cboLOcation.SetFocus End If End Sub 它没有触发 if 语句或盒子。我肯定遗漏了一些明显的东西。
  • 你的列表框的SQL是什么?也许它不等于'canada',它可能等于,例如,等于2。您可以单击一个项目并使用ctrl+G获取即时窗口,输入?Screen.ActiveControl
  • 另外,请确保您的属性页面上的事件行设置为[Event Procedure]

标签: vba ms-access-2010


【解决方案1】:

如果列表框的 SQL 设置为:

SELECT Id, SomeOtherField FROM aTable

那么列表框的值为Id,而不是SomeOtherField。

在这种情况下你应该说:

If Me.[location] = 1 Then  ''Where 1 is the Id you want.

要检查某个控件的值,可以单击一个项目并使用 ctrl+G 获取即时窗口,然后键入

?Screen.ActiveControl 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-14
    • 2012-03-11
    • 1970-01-01
    • 2014-02-09
    • 2013-05-17
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多