VBA项目可以从Office 2007访问哪些表单控件?
在VBA项目中,可以使用“工具箱”窗口创建用户窗体并向其添加控件。默认情况下,“工具箱”窗口包含简单的表单控件,如标签、文本框、列表框等 如果您的机器上安装了其他控件,则可以添加这些控件:右键单击工具箱上的“其他控件”,将显示一整排控件。然而,这并没有说明它们来自哪里 我很想知道在安装了Office2007的机器上保证可以使用哪些控件。它仅仅是标准的,还是一些“附加控件”也保证可用(要么是因为它们随Office 2007提供,要么是因为它们存在于Office 2007将运行的所有Windows版本上)VBA项目可以从Office 2007访问哪些表单控件?,vba,ms-office,office-2007,userform,Vba,Ms Office,Office 2007,Userform,在VBA项目中,可以使用“工具箱”窗口创建用户窗体并向其添加控件。默认情况下,“工具箱”窗口包含简单的表单控件,如标签、文本框、列表框等 如果您的机器上安装了其他控件,则可以添加这些控件:右键单击工具箱上的“其他控件”,将显示一整排控件。然而,这并没有说明它们来自哪里 我很想知道在安装了Office2007的机器上保证可以使用哪些控件。它仅仅是标准的,还是一些“附加控件”也保证可用(要么是因为它们随Office 2007提供,要么是因为它们存在于Office 2007将运行的所有Windows版
例如,我很惊讶即使在Office2007中也没有treeview控件。在我的“附加控件”列表中,我看到了“Microsoft TreeView Control v6”,但我不知道我是否可以相信我的所有Office 2007用户都会看到它;这是Office安装的一部分 通过查看“附加控件”框的“位置”部分,可以看到它们都是同一DLL的一部分 顺便说一句,这些是大多数办公室安装中唯一保证可用的控件 话虽如此,让我们看看您在评论中询问的每个控件具体可以做些什么:
网格 这将取决于您的需求,但您可能可以不使用列表框。VBA中的listbox有几个属性,使其类似于网格 例如,假设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属性更改为frmliststyle选项,然后将MultiSelect更改为frmMultiSelect
这将为您提供一个更像网格的列表框:
历法 2012年8月17日更新: 阅读谁创建了自己的日历控件 Office存在日历控件(mscal.ocx): 但是,必须满足正确的条件:
树景 如果你的客户可以安装一些EXE,你可以让他们安装。这会给你TreeView的控制权 我愿意打赌,大多数机器(尤其是WindowsXP上的旧机器)已经安装了这些OCX;因此,可能不需要安装
最大的问题是,您正在客户端计算机上部署OCX,从支持的角度来看,这会让您感到沮丧。您计划使用哪些其他控件?我知道这很难预测,但如果你明确说明你打算使用什么而不是要求列表,你可能会得到更多的回应。我对常见的怀疑感兴趣-一个“网格”功能列表、一个分层树状视图、一个日历控件。。。诸如此类的事情。@GaryMcGill更新了我的答案b/c我认为您可以将列表框用作类似网格的控件。@ray023:谢谢。你是我书中的ray001:-)谢谢你的回答。这不是好消息,但这不是你的错:-)我确实想完全避免安装任何东西,因为对我来说,Office插件的好处是,你可以在电子邮件中分发它,而不必实际“安装”任何东西。因此,即使是普通控件,除非它们成为基本Windows安装的一部分,否则也将被淘汰。