Excel中的奇怪ActiveX列表框行为
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel中的奇怪ActiveX列表框行为相关的知识,希望对你有一定的参考价值。
在Excel 2007 SP3中,我有一个包含多列,多选ActiveX列表框的工作簿。在大多数计算机上它工作正常。但是在一个用户的计算机上,当我从该列表框中读取并将数据从其中写入另一个工作表时,它的字体变小了。每次单击执行任务的命令按钮时,再次变小。
我们所有的计算机都在Excel 2007 SP3和Windows 7上。只有其中一台有这个问题;它在其他人身上运作良好。
单步执行受影响计算机上的代码,我发现问题发生后,列表框仍然报告字体大小为12(原始字体大小正确),即使实际显示的字体明显较小。
当我将列表框的字体大小设置为12时,没有任何反应。
但是,当我将字体大小设置为10时,它会更改为10.然后当我将其更改为12时,它会返回到12并且看起来正确。但是,这改变了列表框的高度和宽度,并取消选择了其中的任何用户选择(正如我在多选中提到的那样)。
众所周知,需要一种解决方法来将列表框的高度设置为精确的高度,以允许选择底部的最后一个可见项目。每次单击该按钮时都必须重新运行该解决方法。
但是在受影响的计算机上仍然存在两个问题: - 首先,即使我在整个过程中关闭ScreenUpdating,在快速计算机上仍然需要大约半秒来调整它,并且在此期间用户看到奇怪的小列表框字体。 - 其次,尽管我每次都告诉它的高度和宽度是相同的,但每次都会有不同的尺寸,每个尺寸至少有3种尺寸。所以这对用户来说也很奇怪。我忘了在该用户的计算机上测试是否可以根据变通方法选择最后一个可见列表项,并且它将在下一次机会之前一段时间。
所以 - 任何建议?同样,我不知道受影响的计算机与其他计算机之间的配置有何不同。相同的Excel版本,相同的Service Pack,相同版本的Windows。
我尝试在VBA中将ActiveX控件的大小调整为原始的顶部,左侧,宽度,高度。这不适合我。
该问题肯定与具有扩展显示器的笔记本电脑有关。
我在Excel 2016中偶然发现的一个解决方案是,在Excel工作表中,将一个ActiveX Image控件放在Listbox(或其他ActiveX控件,例如命令按钮)后面。
然后更改图像控件的Z-ORDER和“发送回” - 所以你的主控制,例如列表框再次可见。
最后,将图像控制与有问题的控制一起分组,例如,列表框。
如果您有多台显示器,请打开显示设置并确保2之间的比例相同。 ActiveX列表框似乎不能在不同缩放的监视器之间正确缩放,这会导致奇怪的行为。它们在主显示器上看起来不错,但在其他显示器上可能会更小/更大/更模糊。
将其他显示器插入/拔出笔记本电脑时,我总是面临同样的问题。它与屏幕分辨率有关,显然无法用代码轻松修复。
适用于我的解决方案是每次插入/拔出附加显示器后重新启动计算机。然后列表框再次正常工作,字体大小保持不变。
但是,如果您使用较小的字体保存了工作簿,并且在重新打开后仍然很小,只需手动调整列表框窗口的大小(例如,将其设置得更大一些),然后再返回原始大小。
以上是关于Excel中的奇怪ActiveX列表框行为的主要内容,如果未能解决你的问题,请参考以下文章
使用Excel VBA调整列表框以显示比列表框宽度更长的字符串