当他创建UserForm时,Louis将UserForm的Top属性设置为222,他通过反复试验确定了活动窗口的上边框与工作表中第一行数据的顶部之间的像素距离。他想知道是否存在一种以编程方式计算该距离的方法,因为该距离可以根据显示的功能区的多少和编辑栏的高度而变化。

如果需要获取功能区的高度,可以通过以下方式检查CommandBars(“ Ribbon”)对象的Height属性:

iHt = CommandBars("Ribbon").Height

当然,那只会给您最终需要的部分信息。 UserForm的定位信息基于程序窗口的左上角。因此,您需要考虑窗口的边框厚度(如果有边框),功能区高度(如上所述,但仅在使用功能区的Excel版本上运行),公式栏的高度,标尺允许的任何空间等等。

其中大多数没有可检查的Height属性,因此放置UserForm可能是一个反复尝试的过程。

一旦将UserForm正确放置在系统上,就无法保证将其正确显示在其他人的系统上。

我们发现的最佳解决方案是(在这种情况下)不要重新发明轮子。皮尔·皮尔森(Chip Pearson)在他的网站上创建了他所谓的“表格定位器”,该表格消除了对UserForm定位的猜测。您可以在这里找到有关信息:

http://www.cpearson.com/Excel/FormPosition.htm

不收费;这是免费的。它允许您相对于屏幕上的任何单元格定位用户窗体。如果您开发依赖于UserForms的宏,则需要查看Chip提供的功能。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(2309)适用于Microsoft Excel 2007、2010、2013和2016。