Gar*_*ill 5 vba office-2007 ms-office userform
在VBA项目中,您可以使用工具箱窗口创建UserForm并向其添加控件.默认情况下,工具箱窗口包含简单的表单控件,如Label,TextBox,ListBox等.
如果它们已安装在您的计算机上,您可以添加其他控件:右键单击工具箱上的"其他控件"可显示整个控件的冗余部分.但是,这并未说明它们来自何处.
我很想知道在安装了Office 2007的计算机上可以保证哪些控件可用.它只是标准的,还是一些"附加控件"也保证可用(因为它们与Office 2007一起提供,或者因为它们存在于Office 2007将运行的所有Windows版本上)?
例如,我很惊讶即使在Office 2007中也没有树视图控件.在我的"其他控件"列表中,我看到"Microsoft TreeView Control v6",但我不知道我是否可以依赖于所有人我的Office 2007用户.
您看到的控件是FM20.DLL的一部分; 这是Office安装的一部分.
通过查看"其他控件"框的"位置"部分,您可以看到它们都是同一DLL的一部分.
AFAIK,这些是大多数Office安装可用的唯一控件.
所以说,让我们看看你在评论中可以为你提出的每个控件专门做些什么:
这将取决于您的要求,但您可以使用列表框.VBA中的列表框有一些属性可以使它像Grid一样.
例如,假设Excel中的工作表如下所示:
ID001 Value 1 Description 1
ID002 Value 2 Description 2
ID003 Value 3 Description 3
Run Code Online (Sandbox Code Playgroud)
列表框支持多个列,因此您可以通过将listbox属性ColumnCount设置为3并编写以下代码来显示这些值:
Me.ListBox1.ColumnWidths = "50;100;200"
Me.ListBox1.RowSource = Sheet1.Range("A1:C3").Address
Run Code Online (Sandbox Code Playgroud)
你会得到这样的东西:

想要隐藏一个列?没问题,将ColumnWidths属性的宽度更改为零以隐藏列:
Me.ListBox1.ColumnWidths = "50;0;200" 'Hide column 2
Run Code Online (Sandbox Code Playgroud)

如果你不能从中选择东西,网格有什么用呢,对吧?
在列表框中,将ListStyle属性更改为frmListStyleOption,然后将MultiSelect更改为frmMultiSelect.
这将为您提供一个看起来更像网格的列表框:

08/17/2012更新:阅读这篇文章. 其中一个回答的人创建了自己的日历控件.
Office(mscal.ocx)存在日历控件:

但是,必须满足适当的条件:
您仍然可以使用日历控件来使用2010和/或非Access Office安装,但它需要在客户端的计算机上执行其他步骤.
如果您的客户端可以安装某些EXE,则可以让它们安装Microsoft Visual Basic 6.0 Common Controls.这将为您提供TreeView控件.

我愿意打赌,大多数机器(特别是Windows XP上的旧机器)已经安装了这些OCX; 因此可能没有必要安装.
最大的问题是您在客户端计算机上部署OCX,从支持的角度来看这令人沮丧.
| 归档时间: |
|
| 查看次数: |
3160 次 |
| 最近记录: |