Excel中的奇怪ActiveX列表框行为

时间:2015-02-20 21:24:33

标签: excel vba excel-vba user-controls excel-2007

在Excel 2007 SP3中,我有一个包含多列,多选ActiveX列表框的工作簿。在大多数计算机上它工作正常。但是在一台用户的计算机上,当我从该列表框中读取并将数据从其中写入另一张表时,它的字体变小了。每次单击执行任务的命令按钮时,再次变小。

我们所有的计算机都在Excel 2007 SP3和Windows 7上。只有其中一台计算机出现此问题;它适用于其他人。

单步调试受影响的计算机上的代码,我发现当问题发生时,列表框仍然报告字体大小为12(原始字体大小正确),即使实际显示的字体明显较小。

当我将列表框的字体大小设置为12时,没有任何反应。

但是,当我将字体大小设置为10时,它会更改为10.然后当我将其更改为12时,它会返回到12并且看起来正确。但是,这改变了列表框的高度和宽度,并取消选择了其中任何用户的选择(正如我在多选中提到的那样)。

众所周知,需要一种解决方法,将列表框的高度设置为精确的高度,以允许选择底部的最后一个可见项目。每次单击该按钮时都必须重新运行该解决方法。

但受影响的计算机上仍有两个问题:   - 首先,即使我在整个过程中关闭ScreenUpdating,在快速计算机上仍然需要大约半秒来调整它,并且在此期间用户看到奇怪的小列表框字体。   - 其次,即使我每次都告诉高度和宽度相同,每次都会有不同的尺寸,每个尺寸至少有3种尺寸。所以这对用户来说也很奇怪。我忘了在该用户的计算机上测试是否可以根据变通方法选择最后一个可见列表项,并且它将在下一次机会之前一段时间。

所以 - 任何建议?我再也不知道受影响的计算机与其他计算机之间的配置有何不同。相同的Excel版本,相同的Service Pack,相同版本的Windows。

3 个答案:

答案 0 :(得分:1)

我尝试在VBA中将ActiveX控件的大小调整为其原始的顶部,左侧,宽度,高度。这对我不起作用。

这个问题肯定与扩展显示的笔记本电脑有关。

我在Excel 2016中偶然发现的一个解决方案是,在Excel工作表中,将ActiveX Image控件放在列表框(或其他ActiveX控件,例如命令按钮)后面。

然后更改Image控件的Z-ORDER并“向后发送”-因此您的主控件,例如列表框再次可见。

最后,将Image控件与有问题的控件一起分组,例如列表框。

答案 1 :(得分:0)

如果您有多台显示器,请打开显示设置,并确保两台显示器之间的缩放比例相同。 ActiveX列表框似乎无法在不同缩放比例的监视器之间正确缩放,这会导致奇怪的行为。它们在您的主显示器上看起来不错,但在其他显示器上可能会变小/变大/模糊。

答案 2 :(得分:0)

在笔记本电脑上插入/拔出其他显示器时,我总是面临同样的问题。它与屏幕分辨率有关,显然不能轻易用代码修复。

对我来说有效的解决方案是在每次插入/拔下附加显示器后重新启动计算机。然后,列表框可​​以再次正常工作,并且字体大小保持不变。

但是,如果您以较小的字体保存了工作簿,但在重新打开它后仍然很小,只需手动调整“列表框”窗口的大小(例如,将其设置为更大一点),然后再恢复为原始大小即可。