在VBA项目中,您可以使用工具箱窗口创建UserForm并向其添加控件。默认情况下,工具箱窗口包含简单的表单控件,如Label,TextBox,ListBox等。
如果您的计算机上安装了其他控件,则可以添加其他控件:右键单击工具箱上的“其他控件”可显示整个控件的冗余部分。但是,这并没有说明它们来自何处。
我很想知道在安装了Office 2007的计算机上可以使用保证的控件。它只是标准的,还是一些“附加控件”也保证可用(因为它们与Office 2007一起提供,或者因为它们存在于Office 2007将运行的所有Windows版本上)?
例如,我很惊讶即使在Office 2007中也没有树视图控件。在我的“其他控件”列表中,我看到“Microsoft TreeView Control v6”,但我不知道我是否可以依赖于它适用于所有Office 2007用户。
答案 0 :(得分:6)
您看到的控件属于FM20.DLL的一部分;这是Office安装的一部分。
通过查看“其他控件”框的“位置”部分,您可以看到它们都是同一DLL的一部分。
AFAIK,这些是大多数Office安装所保证的唯一控件。
如上所述,让我们看一下您在评论中可以针对每个控件做些什么:
这将取决于您的要求,但您可以使用列表框逃脱。 VBA中的列表框有一些属性可以使它像Grid一样。
例如,假设Excel中的工作表如下所示:
ID001 Value 1 Description 1
ID002 Value 2 Description 2
ID003 Value 3 Description 3
列表框支持多列,因此您可以通过将列表框属性 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 。
这将为您提供一个看起来更像网格的列表框:
08/17/2012更新: 阅读this post。已回答的One of the guys创建了自己的日历控件。
Office(mscal.ocx)存在日历控件:
但是,必须满足正确的条件:
您仍然可以使用日历控件来使用2010和/或非Access Office安装,但它会在客户端的计算机上执行其他步骤。
如果客户可以安装某些EXE,则可以安装Microsoft Visual Basic 6.0 Common Controls。这将为您提供TreeView控件。
我愿意打赌,大多数机器(特别是Windows XP上的旧机器)已经安装了这些OCX;因此可能没有必要安装。
最大的问题是您在客户端计算机上部署OCX,从支持的角度来看这会令人沮丧。