Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA项目可以从Office 2007访问哪些表单控件?_Vba_Ms Office_Office 2007_Userform - Fatal编程技术网

VBA项目可以从Office 2007访问哪些表单控件?

VBA项目可以从Office 2007访问哪些表单控件?,vba,ms-office,office-2007,userform,Vba,Ms Office,Office 2007,Userform,在VBA项目中,可以使用“工具箱”窗口创建用户窗体并向其添加控件。默认情况下,“工具箱”窗口包含简单的表单控件,如标签、文本框、列表框等 如果您的机器上安装了其他控件,则可以添加这些控件:右键单击工具箱上的“其他控件”,将显示一整排控件。然而,这并没有说明它们来自哪里 我很想知道在安装了Office2007的机器上保证可以使用哪些控件。它仅仅是标准的,还是一些“附加控件”也保证可用(要么是因为它们随Office 2007提供,要么是因为它们存在于Office 2007将运行的所有Windows版

在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):

    但是,必须满足正确的条件:

  • 必须在客户端计算机上安装Access
  • 无法删除Office版本,因为它已随此版本一起删除(请参阅从Microsoft Access中删除的功能)
  • 您仍然可以让calendar控件与2010和/或非Access Office安装一起使用,但它需要在客户端计算机上执行其他步骤

  • 下载
  • 将其解压缩到windows/system32目录
  • 登记

  • 树景 如果你的客户可以安装一些EXE,你可以让他们安装。这会给你TreeView的控制权

    我愿意打赌,大多数机器(尤其是WindowsXP上的旧机器)已经安装了这些OCX;因此,可能不需要安装


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

    您计划使用哪些其他控件?我知道这很难预测,但如果你明确说明你打算使用什么而不是要求列表,你可能会得到更多的回应。我对常见的怀疑感兴趣-一个“网格”功能列表、一个分层树状视图、一个日历控件。。。诸如此类的事情。@GaryMcGill更新了我的答案b/c我认为您可以将列表框用作类似网格的控件。@ray023:谢谢。你是我书中的ray001:-)谢谢你的回答。这不是好消息,但这不是你的错:-)我确实想完全避免安装任何东西,因为对我来说,Office插件的好处是,你可以在电子邮件中分发它,而不必实际“安装”任何东西。因此,即使是普通控件,除非它们成为基本Windows安装的一部分,否则也将被淘汰。