首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA项目可以从Office 2007访问哪些窗体控件?

VBA项目可以从Office 2007访问哪些窗体控件?
EN

Stack Overflow用户
提问于 2012-07-17 15:53:47
回答 1查看 3.4K关注 0票数 5

在VBA项目中,可以使用工具箱窗口创建UserForm并向其添加控件。默认情况下,工具箱窗口包含简单的表单控件,如Label、TextBox、ListBox等。

如果其他控件安装在计算机上,则可以添加这些控件:右键单击工具箱上的“附加控件”显示整个控件。然而,这并没有给出他们来自哪里的任何迹象。

我想知道在安装了Office 2007的机器上保证有哪些控件可用。这仅仅是标准控件,还是某些“附加控件”也可以使用(因为它们随Office 2007一起提供,或者因为它们存在于Office 2007将运行的所有Windows版本上)?

例如,即使在Office 2007中也没有treeview控件,这让我感到惊讶。在我的“附加控件”列表中,我看到了“v6",但我不知道是否可以依赖于所有Office 2007用户都能使用该控件。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 14:59:51

您看到的控件是FM20.DLL的一部分;后者是Office的一部分。

通过查看“附加控件”框的“位置”部分,可以看到它们都是同一个DLL的一部分。

AFAIK,这些是大多数Office安装都能保证的唯一控制。

既然如此,让我们看看对于您在评论中询问的每个控件可以做些什么:

  1. “网格”能力列表
  2. 层次树视图
  3. 日历控制

网格

这将取决于您的需求,但您可能可以通过使用列表盒而不受影响。VBA中的列表框具有一些属性,这些属性将使其类似于网格。

例如,假设Excel中的工作表如下所示:

代码语言:javascript
运行
复制
ID001   Value 1 Description 1
ID002   Value 2 Description 2
ID003   Value 3 Description 3

listbox支持多列,因此可以通过将listbox属性ColumnCount设置为3并编写以下代码来显示这些值:

代码语言:javascript
运行
复制
    Me.ListBox1.ColumnWidths = "50;100;200"
    Me.ListBox1.RowSource = Sheet1.Range("A1:C3").Address

你会得到这样的东西:

想藏一列吗?没有问题,请将ColumnWidths属性的宽度更改为零,以使列隐藏:

代码语言:javascript
运行
复制
Me.ListBox1.ColumnWidths = "50;0;200" 'Hide column 2

如果你不能从中选择东西,网格又有什么用呢?

在列表框中,将ListStyle属性更改为frmListStyleOption,然后将MultiSelect更改为frmMultiSelect。

这将给您一个看起来更像网格的列表框:

日历

2012年8月17日更新:请阅读这个职位。接听电话的其中一个人创建了自己的日历控件。

Office (mscal.ocx)存在日历控件:

然而,必须满足适当的条件:

  1. 访问必须安装在客户端计算机上。
  2. Office不能是2010年办事处,因为它是用此版本删除的(请参阅Microsoft中删除的功能)

您仍然可以让日历控件使用2010和/或无法访问Office安装,但它在客户端的计算机上需要执行其他步骤。

  1. 下载mscal.ocx
  2. 将其解压缩到windows/system32 32目录。
  3. 注册它

TreeView

如果您的客户端可以安装一些前妻,您可以让他们安装MicrosoftVisualBasic6.0通用控件。这将为您提供TreeView控件。

我愿意打赌,大多数机器(特别是Windows上的老机器)已经安装了这些OCX;因此,安装可能没有必要。

最大的问题是,您正在客户端计算机上部署OCX,从支持的角度来看,这令人沮丧。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11526305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档