如何向 VBA ListBox 添加水平滚动条

Tom*_*nen 5 vba

我想向 VBA ListBox 添加水平滚动条。

看来内置的ListBox不会自动添加水平滚动条。我有许多字段,其内容超出了列表框的宽度,因此用户无法读取。

我找到了这篇文章,但是由于访问 ListBox 的 hwnd(这在 VBA 中显然不可用),代码失败了。我宁愿不编写本机 DLL 来完成此任务,因为我怀疑有更好的方法。

关于如何向 VBA ListBox 添加水平滚动条的任何想法?

我愿意接受使用替代控件的想法,而不是让它专门与 ListBox 一起使用。

THE*_*HEn 6

您尝试过 ColumnWidths 属性吗?我有带有水平滚动条的列表框。我只需添加 ColumnWidths 属性。

例如我有

e.Listbox1.Columnwidts ="0.5 in;0.2 in;1.5 in;0.75 in;0.5 in"


Ala*_*SFT 0

在那篇文章中,获得 ScaleMode 的唯一原因是设置水平滚动条的宽度。你不必这样做。

SendMessageByNum List1.hwnd, LB_SETHORIZONTALEXTENT, 800, 0
Run Code Online (Sandbox Code Playgroud)

其中 800 是您希望列表框能够向右滚动到的像素宽度。

您仍然需要 hWnd。最好的办法是使用外部 DLL(用 VB 编写),它可以枚举进程的子窗口,直到找到列表框的窗口类(您将需要找到某种方法来唯一标识其父窗口,例如窗口标题/文字或其他内容)。同一个 DLL 还可以执行上面的 SendMessage 调用来设置水平文本范围(也许它还可以测量所包含列表项的宽度)。