精华内容
下载资源
问答
  • 细品RibbonX(39):技巧—使用VBA自定义功能区元素属性资料整理来自于论坛完整版下载地址:http://download.csdn.net/download/nodeman/10264659 Loading ... 除了使用创建自定义属性外,也可以为许多对象(例如...

    细品RibbonX(39):技巧—使用VBA自定义功能区元素属性

    资料整理来自于论坛
    完整版下载地址:http://download.csdn.net/download/nodeman/10264659

     

     Loading ...

     

    除了使用类创建自定义属性外,也可以为许多对象(例如工作簿、工作表,等)创建自定义属性。此外,在给对象定义自定义属性之后,属性作为对象的成员被公开,例如:

    ThisWorkbook.MyRibbon

    正如所见,从父对象直接引用UI对象非常容易,当引用回Ribbon对象时可以省去很多麻烦。考虑到用户经常同时打开多个应用程序,每个程序都会有一个名为MyRibbon的对象,因此让代码可以清楚地指定引用的确切对象是至关重要的。
    设置自定义属性
    设置内置对象的自定义属性与使用标准的类模块创建自定义属性相同。唯一不同的是,属性必须驻留在其容器对象里,以便属性能够作为该指定对象的成员公开。
    可以使用自定义属性模拟上下文选项卡来容易地访问可视的属性、确定标签值,等等。下面的示例中,我们开发自定义属性来控制可见性。该示例实现下列功能:

    • 显示/隐藏与工作表相关的选项卡的自定义属性
    • 两个复选框,控制两个内置组的可见性(字体和表)

    本例中,关键属性是getVisible属性,我们将使之变成自定义属性以便通过该属性修改其值。注意,通过这些自定义属性将显示/隐藏位于不同选项卡里的组。

    <customUIxmlns="http://schemas.microsoft.com/office/2006/01/customui"

              onLoad="rxIRibbonUI_onLoad">

        <ribbonstartFromScratch="false">

            <tabs>

                <tabid="rxtabSheet"

                     label="Sheet Tab"

                     insertBeforeMso="TabHome"

                     getVisible="rxtabSheet_getVisible">

                    <groupid="rxgrp1"

                           label="My Custom Group">

                    </group>

                 </tab>

                 <tabidMso="TabHome"

                      label="Modified Home">

                     <groupid="rxgrp2"

                           insertBeforeMso="GroupClipboard"

                           label="My CheckBox">

     

                     <!-- Add a checkBox -->

                     <checkBoxid="rxchkHideFontGroup"

                           getLabel="rxchkHideFontGroup_getLabel"

                           onAction="rxchkHideFontGroup_Click"

                           screentip="Hide the FontGroup"

                           supertip="Click here tohide/unhide the Font Group"/>

     

                     <!-- Add a checkBox -->

                     <checkBoxid="rxchkHideTableGroup"

                           getLabel="rxchkHideTableGroup_getLabel"

                           onAction="rxchkHideTableGroup_Click"

                           screentip="Hide the TablesGroup"

                           supertip="Click here to hidethe Tables Groups"/>

                     </group>

                 </tab>

                 <tabidMso="TabHome">

                     <groupidMso="GroupFont"

                          getVisible="GroupFont_getVisible"/>

                 </tab>

                 <tabidMso="TabInsert">

                     <groupidMso="GroupInsertTablesExcel"

                          getVisible="GroupInsertTablesExcel_getVisible"/>

                 </tab>

            </tabs>

        </ribbon>

    </customUI>

    上述代码创建了“Modified Home”选项卡,在剪贴板前添加了“My CheckBox”组,并且添加了一个名为“Sheet Tab”的空选项卡,界面如下图所示。

    接下来,定义属性。在ThisWorkbook对象中定义下列属性:

    Private pRibbonUI As IRibbonUI

    Private pblnGrpTblVisible As Boolean

    Private pblnGrpFontVisible As Boolean

     

    '设置Ribbon对象,使之能够作为ThisWorkbook的成员访问

    Public Property LetrxIRibbonUI(iRib As IRibbonUI)

        SetpRibbonUI = iRib

    End Property

     

    Public Property GetrxIRibbonUI() As IRibbonUI

        SetrxIRibbonUI = pRibbonUI

    End Property

     

    '设置可见性属性,使之能够作为ThisWorkbook的成员访问

    Public Property LetrxIRibbonUIGroupTableVisible( _

        ByValblnVisible As Boolean)

        pblnGrpTblVisible = blnVisible

    End Property

     

    Public Property GetrxIRibbonUIGroupTableVisible() As Boolean

        rxIRibbonUIGroupTableVisible =pblnGrpTblVisible

    End Property

     

    Public Property LetrxIRibbonUIGroupFontVisible( _

        ByValblnVisible As Boolean)

        pblnGrpFontVisible = blnVisible

    End Property

     

    Public Property GetrxIRibbonUIGroupFontVisible() As Boolean

        rxIRibbonUIGroupFontVisible =pblnGrpFontVisible

    End Property

    注意,虽然用于决定可见性的这些变量在ThisWorkbook模块,但由于ThisWorkbook对象可以在本工程的任何地方访问,因此可以在该模块之外设置或获取这些属性的值。
    在编写回调代码之前,还需要为工作表创建自定义属性,然后使用这些属性来决定与该工作表相关的选项卡是否显示,这里使用工作表Sheet1,当然您可以根据需要修改。
    使用下列代码为该工作表设置自定义属性:

    Private pglnTabVisible As Boolean

     

    Property Let rxIRibbonUISheetTabVisible(ByVal blnVisible AsBoolean)

        pglnTabVisible = blnVisible

    End Property

     

    Property Get rxIRibbonUISheetTabVisible() As Boolean

       rxIRibbonUISheetTabVisible =pglnTabVisible

    End Property

     

    Private Sub Worksheet_Activate()

        Sheet1.rxIRibbonUISheetTabVisible= True

       ThisWorkbook.rxIRibbonUI.Invalidate

    End Sub

     

    Private Sub Worksheet_Deactivate()

        Sheet1.rxIRibbonUISheetTabVisible= False

       ThisWorkbook.rxIRibbonUI.Invalidate

    End Sub

    注意,现在可以利用我们为ThisWorkbook创建的自定义属性来使Ribbon无效。我们不再将该属性作为普通的对象,相反我们将其作为属性即ThisWorkbook对象的一个成员。因此,该UI是ThisWorkbook的一部分。
    最后,编写回调代码:

    SubrxIRibbonUI_onLoad(ribbon AsIRibbonUI)

        ThisWorkbook.rxIRibbonUI = ribbon

    End Sub

     

    Sub rxtabSheet_getVisible(control AsIRibbonControl, ByRef returnedVal)

        returnedVal =Sheet1.rxIRibbonUISheetTabVisible

    End Sub

     

    SubrxchkHideFontGroup_Click(control As IRibbonControl, pressed As Boolean)

       ThisWorkbook.rxIRibbonUIGroupFontVisible = pressed

       ThisWorkbook.rxIRibbonUI.Invalidate

    End Sub

     

    SubrxchkHideTableGroup_Click(control As IRibbonControl, pressed As Boolean)

       ThisWorkbook.rxIRibbonUIGroupTableVisible = pressed

       ThisWorkbook.rxIRibbonUI.Invalidate

    End Sub

     

    Sub GroupFont_getVisible(control AsIRibbonControl, ByRef returnedVal)

        returnedVal = True

        Ifcontrol.ID = "GroupFont"Then

            returnedVal = Not (ThisWorkbook.rxIRibbonUIGroupFontVisible)

        Else

          ThisWorkbook.rxIRibbonUI.Invalidate

        EndIf

    End Sub

     

    SubGroupInsertTablesExcel_getVisible(controlAs IRibbonControl, ByRef returnedVal)

        returnedVal = True

        Ifcontrol.ID = "GroupInsertTablesExcel"Then

            returnedVal = Not(ThisWorkbook.rxIRibbonUIGroupTableVisible)

        Else

           ThisWorkbook.rxIRibbonUI.Invalidate

        EndIf

    End Sub

     

    SubrxchkHideFontGroup_getLabel(control As IRibbonControl, ByRefreturnedVal)

        SelectCaseThisWorkbook.rxIRibbonUIGroupFontVisible

            CaseTrue

                returnedVal = "Show Font Group"

            CaseFalse

                returnedVal = "Hide Font Group"

        EndSelect

    End Sub

     

    SubrxchkHideTableGroup_getLabel(control As IRibbonControl, ByRefreturnedVal)

        SelectCaseThisWorkbook.rxIRibbonUIGroupTableVisible

            CaseTrue

                returnedVal = "Show Table Group"

            CaseFalse

                returnedVal = "Hide Table Group"

        EndSelect

    End Sub

    现在,你可以通过自定义属性来定义与UI对象相关的不同的属性。

     

     

     

     

     

    展开全文
  • 2、VBA的基础知识

    2019-06-23 11:12:05
    2、VBA的基础知识2-1、VBA简介2-2、程序2-3、事件处理函数2-4、Visual Basic Editor基础VBE开发环境自定义2-5、模块 2-1、VBA简介 宏录制功能局限性 存在不需要代码 无法处理循环和条件分支 无法与...

    2-1、VBA简介

    1. 宏录制功能的局限性
      • 存在不需要的代码
      • 无法处理循环和条件分支
      • 无法与用户互动
      • 缺乏共通性
    2. 利用VBA作成宏
    3. 对象和集合
      • 对象的层次构造
        对象的层次构造
      • 集合和成员
    4. VBA的基本语法
      • 属性
      • 方法

    2-2、程序

    1. 宏和程序
    2. 程序调用
    3. 程序的构成要素
    4. 程序语句
      • 复数行写一条程序语句
        第一行后通过半角空格和下划线(_)进行换行。
      • 一行中写多条程序语句
        通过半角冒号(:)连接两个语句。
    5. 注释
    6. Sub程序和Function程序
    7. 程序调用的优点
    8. 程序调用
      • 相同工作簿程序调用
      • 不同工作簿程序调用
    9. 引用传递和值传递

    2-3、事件处理函数

    1. 事件处理程序作成
      • 事件处理程序的构造
      • 事件处理程序的作成
    2. 工作表的事件种类
    3. 工作簿的事件种类
    4. 事件处理程序的参数
    5. 设定事件处理程序不执行

    2-4、Visual Basic Editor的基础

    1. VBE启动
    2. VBE画面构成
      • 解决方案资源管理器
      • 属性窗口
      • 代码区
    3. 窗口大小变更
    4. 窗口的表示和非表示
    5. 解除窗口连接
    6. 代码区分屏
    7. VBE开发环境自定义(工具->选项)
      • 编辑器
      • 编辑器格式
      • 通用
      • 可连接的
    8. VBE关闭
    9. 帮助功能的使用
      • 显示输入代码的帮助页面

    2-5、类模块

    1. 模块的种类
      • Microsoft Excel 对象
      • 窗体
      • 模块
      • 类模块
    2. 模块的添加与消除
    3. 模块的导出与导入
    4. 代码印刷
    展开全文
  • Excel_VBA教程

    2014-09-22 11:36:34
    8.定义类的属性 230 9.创建PROPERTY GET过程 230 10.创建PROPERTY LET过程 231 11.创建类方法 232 12.创建类的示例 232 13.类模块里的事件过程 232 14.创建用户界面 233 15.观察VBA过程的执行 242 16.接下来…… 245...
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    8.定义类的属性 230 9.创建PROPERTY GET过程 230 10.创建PROPERTY LET过程 231 11.创建类方法 232 12.创建类的示例 232 13.类模块里的事件过程 232 14.创建用户界面 233 15.观察VBA过程的执行 242 16.接下来…… 245...
  • 将所有实例归入基础相关、控制AutoCAD环境、创建和编辑二维对象、对象特性、文字、标注和公差、块和属性、处理AutoCAD中事件、三维空间操作、打印、高级绘图组织、使用组件扩展程序功能、和Excel交换数据、...
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
    完整清晰版 PDF ,有目录。共 270MB,分为 2 个分卷 中文版Excel 2007 高级... 11.3.1 切换布尔类型的属性值  11.3.2 确定打印页面的数量  11.3.3 显示日期和时间  11.3.4 获得字体列表  11.3.5 对数组进行排序  ...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
    中文版Excel.2007高级VBA编程宝典 2/2 完整清晰版 PDF ,有目录。共 270MB,分为 2 个分卷 ... 11.3.1 切换布尔类型的属性值  11.3.2 确定打印页面的数量  11.3.3 显示日期和时间  11.3.4 获得字体...
  • Excel_VBA_语法与应用辞典

    热门讨论 2012-03-22 14:46:32
     9-3 控件的属性设置 Chapter 10 与外部程序的协作  10-1 导入/导出文本文件  10-2 与Office组件的协作 Chapter 11 打印与页面设置  11-1 打印  11-2 页面设置 Chapter 12 文件及文件夹管理  12-1...
  • 学习资源:《Excel VBA从入门到进阶》第59集 by兰色幻想二、显示图标刚开始就又遇到个问题,点击VBA控件Imagelist的自定义属性点击后出现如下错误:“未注册。查找具有以下CLSID对象:{7ebdaae2-8120-11cf-899f-...

    9d12779cb7b71dca00cc6cd84780797f.png

    学习资源:《Excel VBA从入门到进阶》第59集 by兰色幻想


    二、显示图标

    刚开始就又遇到个问题,点击VBA控件Imagelist的自定义属性点击后出现如下错误:“类未注册。查找具有以下CLSID的对象:{7ebdaae2-8120-11cf-899f-00aa00688b10}。

    解决方法是下载Msstkprp.dll并注册,具体操作见以下两个链接:

    Excel excelvba问题-ExcelVBA程序开发-ExcelHome技术论坛 -club.excelhome.netImageList控件点自定义后提示类未注册 - Excel VBA开发 - Excel精英培训网 - Powered by Discuz!www.excelpx.com

    解决完问题,继续学习,本篇显示图标,在上一篇设置列标题ColumnHeaders时,讲到了六个参数,最后一个是显示的图标。

    listitem1.ColumnHeaders.Add 列数,key(一列的唯一标识),标题,宽度,对齐方式,显示的图标
    1. Imagelist控件的设置

    要在Listview显示图标,首先我们要插入Imagelist控件。

    在工具箱没有,去到附加控件找到Mircosoft ImageList Control 6.0(SP6), 并勾选确认。随后就能在工具箱看到了,我们选中它,并在窗体中建立一个。

    610e2bf411af6d3d6f04b0b067b58f46.png

    选中窗体Imagelist控件,在属性中双击自定义行,设置图标的大小。

    5b1196ca5ce8a8210dbece5c0705c67b.png

    d8668198b73e9a1d6e00536fa6556fb0.png
    选择custom自定义,然后输入高和宽的值

    接下来选images,选择插入图片Insert Picture。它能选择的图片格式似乎很少,PNG的图片也识别不了,而ipeg格式的图标图也不好找,所以我用了看山的图来展示一下。(注意插入的图片大小不要太大)

    图标的提取还要借助ImageList控件。图片加载到ImageList后会有序号(Index),可以用序号来表示图片。也可以手动改序号。

    711c4dd11b2885f8b5cfa21897bc5c6a.png

    2. 提取图片

    图标、小图标、列标题图标都从ImageList控件取,在程序的最开始写。

    Icons属性(普通大小图标)

    SmallIcons(小图标)

    ColumnHeaderIcons属性(标题图标)

    ListView1.Icons = ImageList1 '设置图标从imagelist中提取图片
    ListView1.SmallIcons = ImageList1 '小图标
    ListView1.ColumnHeaderIcons = ImageList1 '列标题图标

    3. 设置列标题的第六个参数

    listitem1.ColumnHeaders.Add 列数,key(一列的唯一标识),标题,宽度,对齐方式,显示的图标

    最后显示的图标,可以直接写图标的索引值。例:

    ListView1.ColumnHeaders.Add 1, , "QQ", ListView1.Width / 3, , 1 '列显示图标,编号1
    ListView1.ColumnHeaders.Add 2, , "昵称", ListView1.Width / 3, lvwColumnCenter, 2
    ListView1.ColumnHeaders.Add 3, , "地区", ListView1.Width / 3, , 3

    4. 大图标和小图标

    上面说了列标题的图标,是大图片,还可以在内容行显示小图标。(下一篇再细讲)

    For i = 2 To 5
        Set ITM = ListView1.ListItems.Add()
        ITM.Text = Cells(i, 1)
        ITM.SubItems(1) = Cells(i, 2)
        ITM.SubItems(2) = Cells(i, 3)
        ITM.SmallIcon = 4 '(小图标,在小图标视图下显示的图标)
    Next i

    bf026d19f6f7b599e2ef2d6adca14549.png

    汇总代码:

    Private Sub UserForm_Initialize()
    Dim i%
    Dim ITM As ListItem
    ListView1.Icons = ImageList1 '设置图标从imagelist中提取图片
    ListView1.SmallIcons = ImageList1 '小图标
    ListView1.ColumnHeaderIcons = ImageList1 '列标题图标
    
    ListView1.ColumnHeaders.Add 1, , "QQ", ListView1.Width / 3, , 1 '列显示图标,编号1
    ListView1.ColumnHeaders.Add 2, , "昵称", ListView1.Width / 3, lvwColumnCenter, 2
    ListView1.ColumnHeaders.Add 3, , "地区", ListView1.Width / 3, , 3
    
    ListView1.View = lvwReport
    ListView1.Gridlines = True
    
    For i = 2 To 5
        Set ITM = ListView1.ListItems.Add()
        ITM.Text = Cells(i, 1)
        ITM.SubItems(1) = Cells(i, 2)
        ITM.SubItems(2) = Cells(i, 3)
        ITM.SmallIcon = 4 '(小图标,在小图标视图下显示的图标)
    Next i
    
    End Sub

    三、视图模式

    我们之前所用到的视图模式一直是报表模式:

    ListView1.View = lvwReport

    其实除了报表模式,还有三种视图模式:图标视图lvwIcon、小图标视图vwSmallIcon、列表视图lvwSmallIcon。效果如下所示,以后能按需使用。

    2cf10c0958d4b7c03b2ce3661945c423.png

    e4b94d05843e3c8c0674b468b64325f7.png

    aaf0da1c6b8f477392319ba5e42f1c1f.png

    96110b5348f679062b3c231e683119a4.png
    展开全文
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    .................................................................................................................1 1.1 VBA是什么...........................................................................
  • 01069获取Excel命令按钮外观图像和FaceID号(添加到自定义工具栏) 01070获取Excel命令按钮外观图像和FaceID号(输出到工作表) 01071改变Excel命令按钮外观图像 01072删除、恢复Excel菜单栏和工具栏 01073...
  • Access 2007 VBA宝典 4/4

    2012-03-31 08:36:49
     本书内容丰富,并且在配套网站上提供了书中所有示例文件和代码,有助于读者通过亲身实践掌握Access VBA的强大功能。本书适合Office中高级用户以及希望学习Access VBA的人员参考。 目录 ------------------...
  • Access 2007 VBA宝典 2/4

    2012-03-31 08:22:16
     本书内容丰富,并且在配套网站上提供了书中所有示例文件和代码,有助于读者通过亲身实践掌握Access VBA的强大功能。本书适合Office中高级用户以及希望学习Access VBA的人员参考。 目录 ------------------...
  • Access 2007 VBA宝典 3/4

    2012-03-31 08:31:46
     本书内容丰富,并且在配套网站上提供了书中所有示例文件和代码,有助于读者通过亲身实践掌握Access VBA的强大功能。本书适合Office中高级用户以及希望学习Access VBA的人员参考。 目录 ------------------...
  • Access 2007 VBA宝典 1/4

    2012-03-31 08:12:09
     本书内容丰富,并且在配套网站上提供了书中所有示例文件和代码,有助于读者通过亲身实践掌握Access VBA的强大功能。本书适合Office中高级用户以及希望学习Access VBA的人员参考。 目录 ------------------...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    第十节其他语句和错误语句处理................................................................................................4 第十一节过程和函数.........................................................
  • access 2003绿色版

    2019-01-13 22:52:33
    Access 数据库2003版VBA代码一般可以写在公共模块、窗体模块、报表模块、自定义类模块中 按Alt+F11打开VBE,插入模块,就可以在模块中输入代码了。 在窗体中,选择某个控件或窗体节或窗体等对象,在属性栏中事件选项...
  • 2.4.1 使用现有的属性 35 2.4.2 使用现有的方法 38 2.4.3 使用命名参数 38 2.4.4 将对象赋值给变量 39 2.5 使用集合 41 2.5.1 计算元素的数量 42 2.5.2 访问集合元素 42 2.5.3 对集合元素循环 43 ...
  • ArcCatalog中文使用手册

    热门讨论 2011-04-05 14:18:39
    改变数据格式的属性 82 添加文件类型 84 第六章 管理Catalog的内容 87 查看数据项的内容 88 在Details视图中操作 90 改变列 92 浏览数据项的属性 95 组织数据 96 将数据转换为不同格式 98 第七章 浏览数据项的...
  • 2.4.1 使用现有的属性 35 2.4.2 使用现有的方法 38 2.4.3 使用命名参数 38 2.4.4 将对象赋值给变量 39 2.5 使用集合 41 2.5.1 计算元素的数量 42 2.5.2 访问集合元素 42 2.5.3 对集合元素循环 43 2.6 定制...
  • ArcCatalog 使用手册

    2010-03-18 15:31:25
    改变数据格式的属性 82 添加文件类型 84 第六章 管理Catalog 的内容 87 查看数据项的内容 88 在Details 视图中操作 90 改变列 92 浏览数据项的属性 95 组织数据 96 将数据转换为不同格式 98 第七章 浏览数据项的...
  •  开放GRX、VBA、VLISP等接口,使浩辰CAD与企业ERP/PDM/CAPP等信息化系统实现无缝对接,支持国内外主流信息化系统如:  PTC公司Windchill PDMlink 和 ProductLink  西门子公司Teamcenter Enterprise 和 ...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...
  • 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access表显示 443.2.1 最大化...

空空如也

空空如也

1 2 3 4 5
收藏数 92
精华内容 36
关键字:

vba自定义类的属性