获取滚动列表框 VBA 中的顶部项目

Posted

技术标签:

【中文标题】获取滚动列表框 VBA 中的顶部项目【英文标题】:Get Top Item in Scrolled Listbox VBA 【发布时间】:2017-07-21 15:23:32 【问题描述】:

我有一个在表单上有一个列表框的 Access 数据库。这个列表可以滚动,但是一旦列表滚动,我需要知道最上面的项目是什么。

我想创建一个类似于甘特视图的同步视图,它将位于列表旁边(我已经有代码要做)但我可以找出最上面的项目是什么我知道哪个项目需要在同步视图的顶部。

任何帮助将不胜感激。

谢谢

【问题讨论】:

您可能是指显示行的顶行。但是这个 ID 没有在 Access 中公开。用户必须选择一行,然后您的代码才能将图表同步到此行的 ID。 开始宏录制,然后滚动列表框几次。也许有用的东西会被记录下来 【参考方案1】:

您可以使用列表方法后跟索引。例如要在 MsgBox 中显示,那么您可以使用:

MsgBox ComboBox1.List(0)

其中 0 是列表中的第一项 1 是第二个等等,等等

希望有帮助

编辑:

这是我作为测试尝试的代码,它运行良好。

Private Sub UserForm_Click
MsgBox ListBox1.List(0)
End Sub



Private Sub UserForm_Initialize()
UserForm1.ListBox1.AddItem "a"
UserForm1.ListBox1.AddItem "b"
UserForm1.ListBox1.AddItem "c"
UserForm1.ListBox1.AddItem "d"
UserForm1.ListBox1.AddItem "e"
End Sub

这显示了一个内部带有字母“a”的消息框,因为这是添加到 ListBox 的第一项(包含要填充的代码以显示它是首先添加的)。如果您想按字面显示 ListBox 中的第一项,那么这将起作用。如果您当时希望在列表中显示顶部(基于用户是否已滚动),请告诉我,我将尝试解决此问题

【讨论】:

嗨,谢谢你,我对此有点困惑。我正在使用一个列表框,用户可以在表单上向下滚动。我不知道他们滚动到了哪里,所以我不知道获取项目数据的索引。这就是为什么我想知道 vba 中是否有类似 listbox.topindex 的东西 (0) 将始终引用 ComboBox 中的顶部项目。我以为这就是你想要的? 在一个列表框中应该是一样的 抱歉,不,我使用的是列表,并且在 VBA 中有点限制。 请查看答案上的编辑/这都是vba :)

以上是关于获取滚动列表框 VBA 中的顶部项目的主要内容,如果未能解决你的问题,请参考以下文章

VBA Excel:列表框自动滚动

当未从多个选择框之一中选择项目时,基于 Access 中的多个“多个选择列表框”的 VBA 查询

VBA - Excel列表框 - 在向第二个列表框添加项目时查找重复项

如何把查询结果显示在控件列表框中?我现在是显示在表单中。

使用Excel VBA调整列表框以显示比列表框宽度更长的字符串

用户表单组合框大小 - VBA