在VBA项目中,可以使用工具箱窗口创建UserForm并向其添加控件。默认情况下,工具箱窗口包含简单的表单控件,如Label、TextBox、ListBox等。
如果其他控件安装在计算机上,则可以添加这些控件:右键单击工具箱上的“附加控件”显示整个控件。然而,这并没有给出他们来自哪里的任何迹象。
我想知道在安装了Office 2007的机器上保证有哪些控件可用。这仅仅是标准控件,还是某些“附加控件”也可以使用(因为它们随Office 2007一起提供,或者因为它们存在于Office 2007将运行的所有Windows版本上)?
例如,即使在Office 2007中也没有treeview控件,这让我感到惊讶。在我的“附加控件”列表中,我看到了“v6",但我不知道是否可以依赖于所有Office 2007用户都能使用该控件。
发布于 2012-07-25 14:59:51
您看到的控件是FM20.DLL的一部分;后者是Office的一部分。
通过查看“附加控件”框的“位置”部分,可以看到它们都是同一个DLL的一部分。
AFAIK,这些是大多数Office安装都能保证的唯一控制。
既然如此,让我们看看对于您在评论中询问的每个控件可以做些什么:
网格
这将取决于您的需求,但您可能可以通过使用列表盒而不受影响。VBA中的列表框具有一些属性,这些属性将使其类似于网格。
例如,假设Excel中的工作表如下所示:
ID001 Value 1 Description 1
ID002 Value 2 Description 2
ID003 Value 3 Description 3
listbox支持多列,因此可以通过将listbox属性ColumnCount设置为3并编写以下代码来显示这些值:
Me.ListBox1.ColumnWidths = "50;100;200"
Me.ListBox1.RowSource = Sheet1.Range("A1:C3").Address
你会得到这样的东西:
想藏一列吗?没有问题,请将ColumnWidths属性的宽度更改为零,以使列隐藏:
Me.ListBox1.ColumnWidths = "50;0;200" 'Hide column 2
如果你不能从中选择东西,网格又有什么用呢?
在列表框中,将ListStyle属性更改为frmListStyleOption,然后将MultiSelect更改为frmMultiSelect。
这将给您一个看起来更像网格的列表框:
日历
2012年8月17日更新:请阅读这个职位。接听电话的其中一个人创建了自己的日历控件。
Office (mscal.ocx)存在日历控件:
然而,必须满足适当的条件:
您仍然可以让日历控件使用2010和/或无法访问Office安装,但它在客户端的计算机上需要执行其他步骤。
TreeView
如果您的客户端可以安装一些前妻,您可以让他们安装MicrosoftVisualBasic6.0通用控件。这将为您提供TreeView控件。
我愿意打赌,大多数机器(特别是Windows上的老机器)已经安装了这些OCX;因此,安装可能没有必要。
最大的问题是,您正在客户端计算机上部署OCX,从支持的角度来看,这令人沮丧。
https://stackoverflow.com/questions/11526305
复制相似问题