Excel 2010 VBA ActiveX调整大小

时间:2018-09-21 18:51:00

标签: excel vba excel-2010 activex

嗨,我将Excel 2010与ActiveX控件配合使用。我知道Activex控件会导致控件损坏和大小随机变化。当我更换屏幕时,此问题开始。

我需要能够通过单击按钮将元素添加到表单控件中,还需要通过VBA访问表单中的元素。

我的问题是如何将元素添加到表单控件列表框中,如何访问它以及如何删除它。

我的代码使用了所有活动的x组件,但我想将它们切换。我不确定如何在表单控件列表框中设置名称,甚至无法在VBA中访问它。

任何帮助都会很棒!

PS。我正在使用Windows 7,Excel 2010

1 个答案:

答案 0 :(得分:0)

此方法创建一个列表框运行时。您只需要在UserForm1上留出空间即可。

Dim lb As msforms.ListBox
Set lb = UserForm1.Controls.Add("forms.listbox.1", "MyListBox1")

这也是有关如何引用(ActiveX)对象的很好的演示。一种避免意外/意外调整大小的解决方法,可以有意地从代码内定期运行以下代码段:

If lb.width <> 100 Then   ' or you can check other properties, too
    lb.Top = 120
    lb.Left = 40
    lb.Width = 100
End If

这也可以应用于其他ActiveX对象,例如:

If UserForm1.Width <> 200 Then
    UserForm1.Width = 200 
    ...

您只需要在代码中找到一个经常运行此代码段的适当位置,当然也可以在UserForm_Initialize中找到一个合适的位置。您还可以通过这种方式设置其他属性,例如标题或制表符等。

要添加和删除项目,您需要使用如下索引:

lb.AddItem "First item", 1
lb.AddItem "Second item", 2
lb.AddItem "Third item", 3

lb.RemoveItem 2