Excel ActiveX 列表框随着每次更新而缩小

问题描述 投票:0回答:2

我有一组链接的子程序,其工作原理如下:

  1. 用户在 ActiveX 文本框中键入内容
  2. TextBox 中的更改事件调用模块中的子组件
  3. 该模块子驱动器更新工作表中的命名范围
  4. 范围值驱动更新使用基于范围值的查找函数的 Excel 单元格表
  5. 将表值复制并粘贴到另一个范围(以消除公式链接)
  6. 使用此方法将粘贴的范围放入列表框中(感谢 Rory 的耐心):

    ActiveSheet.ListBox1.List = Sheets("搜索条件控件").Range("G1:G21").Value

结果是,对于用户在 TextBox 中键入的每个字符,ListBox 都会更新。

我遇到的问题是,随着上面 #1 中提到的 TextBox 中的每次击键,ListBox 都会缩小一点。 这是正常行为吗?我误用了列表框,我是否做错了什么,或者每次更新列表框时我是否需要重新指定列表框的尺寸?

ActiveSheet.OLEObjects("ListBox1").Top = 35
ActiveSheet.OLEObjects("ListBox1").Left = 650
ActiveSheet.OLEObjects("ListBox1").Width = 550
ActiveSheet.OLEObjects("ListBox1").Height = 610

提前感谢您对此的任何想法。

vba excel listbox
2个回答
13
投票

我也遇到了同样的问题。 我的 ActiveX 列表框会在工作表上移动并更改大小,但我看不到任何原因。

虽然我确实继续开发了一些代码来重置大小和坐标,但这并不令人满意,因为必须有一种机制来触发该代码 - 我不想给最终用户带来负担。

我在另一个用户论坛找到了更好的答案。 有一个名为

IntegralHeight
的列表框属性,其默认属性为
True
- 与屏幕分辨率和列表框内容的最佳显示有关。 只需将其设置为
False
即可。 我用一些让我适应的 ActiveX 框做到了这一点,并且我能够禁用“调整”代码,到目前为止,一切都很好!


0
投票

IntegralHeight = True 是一个很好的解决方案。我的工作簿中有一个代码,每次激活工作表时都会调整列表框的大小 - 而且这个解决方案也不知道为什么不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.