格式化程序添加的控件以适应单元格



我正在通过Microsoft Excel在Visual Basic中创建一个程序,在那里我可以将应用程序中的所有信息输入到Excel中。每一行都是唯一的,并具有一个下拉控件,该控件是通过程序创建和放置的(请参阅下面的代码)。

我遇到的问题是正确地将控件放置在其中一列中的每个单元格中。

我在网上浏览了一些文件,也看到了其他问题的例子,但似乎都不适合我的情况。我一直不得不猜测并检查AddFormControl函数的x和y值,以便以某种正确的方式放置控件。

代码:

For y = 1 To UBound(array) + 1
Set lb = Sheet1.Shapes.AddFormControl(xlDropDown, 274, 32 + (19 * y), 77, 19)
With lb
.ControlFormat.DropDownLines = 3
.ControlFormat.AddItem "Select a value", 1
.ControlFormat.AddItem "Auto", 2
.ControlFormat.AddItem "Default", 3
.ControlFormat.Value = 1
End With
Next y

我已经计算了所有行和列的宽度和高度,这样我就可以将控件放置在正确的位置,但它们是偏移的,有些比其他的更偏移。

上面的274 x值是我希望excel表上x轴上的点,但不是点之前的列加起来有多宽。y值77也是如此。

解决这个问题最有效的办法是什么?

实际上,您可以使用Range.TopRange.Left将From Controls准确地放置在您想要的位置,它们将与有问题的单元格完全对齐。这是一个很好的方法,可以动态地大量添加它们。

最新更新