我正在通过Microsoft Excel在Visual Basic中创建一个程序,在那里我可以将来自应用程序的所有信息输入到excel中。每行都是唯一的,并具有一个以编程方式创建和放置的下拉控件(请参见下面的代码)。
我遇到的问题是将控件正确地放在其中一列的每个单元格中。
我已经阅读了网上的文档,并看到了其他问题的示例,但是似乎没有一个适合我的情况。我一直不得不猜测-n-检查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也是如此。
最有效的解决方案是什么?
答案 0 :(得分:1)
您实际上可以使用Range.Top
和Range.Left
将发件人控件精确地放置在所需位置,它们将与所讨论的单元格完美对齐。这是一种动态动态添加它们的好方法。