格式化以编程方式添加的控件以适合单元格

时间:2019-01-10 21:52:17

标签: excel vba

我正在通过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也是如此。

最有效的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

您实际上可以使用Range.TopRange.Left将发件人控件精确地放置在所需位置,它们将与所讨论的单元格完美对齐。这是一种动态动态添加它们的好方法。