精华内容
下载资源
问答
  • 学习Excel技术,关注微信...添加按钮如果要在内置功能区选项卡中添加两个按钮,在单击这些按钮时会调用VBA过程,那么执行下面的步骤:1. 创建新工作簿并保存为启用的工作簿。2. 关闭该工作簿,然后在CustomUI...

    学习Excel技术,关注微信公众号:

    excelperfect

    下面的一系列文章将重点讲解如何在功能区中添加不同类型的自定义控件,它们与最底层的自定义命令相关。这里的自定义命令是指程序员自已编写的VBA过程。

    添加按钮

    如果要在内置功能区选项卡中添加两个按钮,在单击这些按钮时会调用VBA过程,那么执行下面的步骤:

    1. 创建新工作簿并保存为启用宏的工作簿。

    2. 关闭该工作簿,然后在CustomUI Editor中打开该工作簿。

    3. CustomUI Editor中,单击“插入”并选择“Office 2007 Custom UI Part”。

    4. 选择“Insert | Sample XML | Custom Tab”,作一些修改,或者复制并粘贴下面的XML代码,在功能区“插入”选项卡中添加包含两个按钮(标记为Insert 0Insert 1,带有Mso图像01)的标记为Attn Sh的组。

    b6684f9d37f8b1d647cf44d8fc49c4da.png

    选项卡元素:

    idMso属性的值是内置选项卡的名称。本例中,TabInsert是“插入”选项卡的idMso。如果要在其他内置选项卡中插入按钮,那就使用其他选项卡的idMso替换掉TabInsert

    组元素:

    group元素中label属性的值指定功能区中组显示的文本。

    按钮元素:

    imageMso属性为按钮指定预定义的图像。如果要使用自已设计的图像,只需使用image属性替换掉imageMso属性。

    onAction属性是一个回调属性。该属性的值是在单击按钮时要执行的VBA过程的名称。

    5. 单击工具栏中的Validation按钮来检查是否有错误。

    6. 单击Generate Callbacks按钮。

    由于XML代码中有两个回调属性(每个按钮一个),因此生成两个回调:

    'Callback for BtnInsert0onAction

    SubInsert0(control As IRibbonControl)

    End Sub

    'Callback for BtnInsert1onAction

    SubInsert1(control As IRibbonControl)

    End Sub

    复制回调代码。之后,要将其粘贴到工作簿的VBA模块中。

    7. 保存并关闭该文件。

    8. Excel中打开该工作簿文件。

    9. Alt+F11键打开VBE

    10. 插入一个标准VBA模块并粘贴刚才复制的回调代码。

    11. 添加一些代码来测试这两个按钮:

    'Callbackfor BtnInsert0 onAction

    Sub Insert0(control AsIRibbonControl)

        With control

            MsgBox "单击了" & .Context.Caption &"中的" & .ID

        End With

    End Sub

    'Callbackfor BtnInsert1 onAction

    Sub Insert1(control AsIRibbonControl)

        With control

            MsgBox "单击了" & .Context.Caption &"中的" & .ID

        End With

    End Sub

    单击按钮时会显示:

    fab289c4fc928696a737eca39e4d396e.png

    Insert0回调过程中的参数control3个属性:

    IDXML代码中指定的控件的id

    Context包含该功能区的活动窗口。Context.Caption是出现在该窗口标题栏中的名称,本例中,为该工作簿的名称。

    TagXML代码中元素(本例中是按钮元素)的tag属性的值。通常,标签用于识别控件执行的操作。

    下图展示在功能区的“插入”选项卡出现了含有两个按钮的Attn Sh组。

    5bb9fa9848e497c9b5653a5cdcaf1f7f.png

    说明:本专题系列大部分内容学习整理自《Dissectand Learn Excel VBA in 24 HoursChangingworkbook appearance》,仅供学习研究。

    欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    欢迎到知识星球:完美Excel社群,进行技术交流和提问,获取更多电子资料。

    f2a89b8d285054e3a90a5522db84e500.png

    展开全文
  • Excel VBA如何创建可撤销操作的

    千次阅读 2015-08-04 19:15:11
    VBA宏执行后,一般是能撤销操作的(快速访问工具栏或者编辑栏里的撤销按钮)。那么当有时候误操作的时候就不得关闭文档再次开启。其实VBA中提供了我们撤销操作的方法,但是这个方法就是我们得编写一个撤销...

    方法来自:http://www.exceltip.net/thread-9582-1-1.html,如转载请注明出处。

    在VBA宏执行后,一般是不能撤销操作的(快速访问工具栏或者编辑栏里的撤销按钮)。那么当有时候误操作的时候就不得不关闭文档再次开启。其实VBA中提供了我们撤销宏操作的方法,但是这个方法就是我们得编写一个撤销宏操作的另一个宏。虽然比较繁琐,但是这个方法可以让我们将操作之前的数据作为参数传递,从而完整恢复宏操作之前的状态。
    在宏的最后我们加上如下语句即可指定进行撤销操作时执行的宏。注意有两个参数

    Application.OnUndo 撤销按钮显示的内容,指定宏的名称
    请参考例子:

    Sub Test1()
        Dim Temp
        Temp = Range("A1")      '记录A1之前的数据
        Range("A1") = 100       '操作A1
        '创建可撤销的操作。并指定带参数的Test2为撤销时的宏
        Application.OnUndo "撤销Test1宏操作", "'Test2 """ & Temp & """'"
    End Sub
    Sub Test2(ByVal Rng)
        Range("A1") = Rng   'Test2可以用于恢复A1原来的值
    End Sub




    展开全文
  • 功能分析要实现的这个添加代码的菜单,需要具备以下几...01自动更新要自动更新是比较简单的,只要在加载打开的时候,执行一次添加菜单的功能即可,所以,需要在加载的Thisworkbook模块添加代码:Private Sub Wor...

    42e2bdcc45a1533c94a1eb2410e7b994.png

    功能分析

    要实现的这个添加代码的菜单,需要具备以下几个特点:

    • 要添加的项目肯定会不停的改变,所以必须要能够方便添加代码和自动更新。

    • 即能添加单个的按钮,也能在菜单上继续添加下拉式的菜单,这样方便一些同类型的功能放在一起。

    01自动更新

    要自动更新是比较简单的,只要在加载宏打开的时候,执行一次添加菜单的功能即可,所以,需要在加载宏的Thisworkbook模块添加代码:

    Private Sub Workbook_Open()    Call AddCommanBarEnd Sub

    这样加载宏打开的时候,每次都去重新创建一次菜单,只要把创建菜单的代码逻辑规划好就可以。

    02分类自动添加

    因为需要分类(单独按钮和新的弹出式)创建,所以必须有个地方能够让我们知道要创建的是什么类型的,个人做法是:

    毕竟这个不是非常复杂的程序,所以在一个单独的文件夹专门存放代码,然后手动创建一个目录,平时只要去维护这个目录即可。

    目录的信息主要有:

    msoControl  添加控件类型(单独按钮和新的弹出式)caption    控件的显示名称faceID    控件的图标endflag    这个是标记弹出式控件结束的

    按如下格式创建一个CommandBarDir.txt文件:

    msoControl,caption,faceID,endflag1,vba_main,538,1,i_row,73,10,Object,361,1,dic,2,1,ado,50,1,fso,53,1,json,203,1,Clipboard,19,1

    每增加一个代码文件的时候,都要在目录中添加一行信息。这种常用的片段代码个人认为不会特别多,所以手动维护一个这样的目录应该不难。

    前面的1和10对应的分别是msoControlButtonmsoControlPopup,这个数字可以在立即窗口这样输入查看:

    ?msoControlButton

    这个就是VBA内置定义好了的枚举类型:

    1719b7bb6067e544842d3953e8e46e46.png

    caption对应的名称就是保存代码的txt文件:

    227d361d0db88f18ef0402d02cba8540.png

    这里不使用遍历获取文件的目的是,菜单的顺序用习惯了还是不喜欢变动的,如果遍历获取文件,默认是按照字母排序的,可能在更新的时候有变动。

    faceID是控件前面的小图标,这个其实无所谓,有兴趣可以写个简单的代码,在菜单上添加控件,设置不同的faceID看看:

    Sub TestExcelCMDB()    Dim cmdb As CommandBarButton        Application.CommandBars("Worksheet Menu Bar").Reset       Dim i As Long    For i = 1 To 200        Set cmdb = Application.CommandBars("Worksheet Menu Bar").Controls.Add(msoControlButton, Temporary:=True)        cmdb.FaceId = i    NextEnd Sub

    c117a7fe9bb2a44835c389c08b32c2b2.png

    endflag就是为了标识msoControlPopup的结束。

    基本上前期的一些基础就这些了,这里主要做的就是维护好CommandBarDir.txt文件。

    3eb8277f2ee449787636a6a2813284b0.png

    展开全文
  • 31、启动 Microsoft Excel 时运行“自动执行宏” 32、焦点 二、、了解对象、属性、方法和事件 1、了解对象、属性、方法和事件 2、Application 对象 3、Workbook 对象 4、Workbooks 属性 5、Range 对象 6、Range...
  • word 2010 的使用Word中对的定义Word的优缺点Word运用实例---批量提取word数据结语 Word中对的定义 Microsoft Word中对定义为:“就是能...说到Word,就不得提出VBAVBA本质相同,都是使用VB

    VBA是什么?

    VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。主要能用来扩展Windows的应用程序功能,特别是Microsoft Office软件。它也可说是一种应用程式视觉化的 Basic 脚本。
    1993年由微软公司开发的应用程序共享一种通用的自动化语言--------即Visual Basic for Application(VBA),实际上VBA是寄生于VB应用程序的版本。1994年发行的Excel 5.0版本中,即具备了VBA的宏功能。(以上为百度百科上的解释,百度百科地址

    为什么要使用VBA?

    上篇文章(文章地址)Word宏的运用,其中也说明了Word宏缺点比较明显,“通过录制得到的往往没有手动编写代码得到的更加精致和灵活”,在实际运用中,我们想对文本进行批处理时,往往存在其它的变化因素,单纯的通过手动录制宏,没有办法实现最终目的,此时就需要灵活的编写VBA代码来达到预期的结果。

    VBA的运用实例—批量清除表格某单元格内容

    工作中经常遇到对word的批量操作,如果重复的操作达到上百甚至更多后,也是不小的工作量,若手动处理很容易出现因为疲劳导致的处理错误、遗漏等问题。而此时只会简单的录制宏,就会发现有时使用录制的宏去处理,并不能很好的解决我们的问题,下面跟着我一起分析一个案例,我会详细说明如何根据需求先对文档进行分析,再设计解决方案,最后进行代码的实现。(有编程基础的,建议直接看代码)
    如图所示:
    目的:将设计单中的"测试结果"和"问题标识"列内容清空。
    在这里插入图片描述

    文档其它部分展示

    在这里插入图片描述

    文档分析:

    1. 若要清除设计单9的"测试结果"和"问题标识"列,我们只需要将8~11行的4、5列内容替换为空即可,代码实现为ActiveDocument.Tables(1).Cell(8, 4).Range.Text = "",表示将第1个表格的8行4列内容写成空,后面再更改行数和列数,就能实现将8~11行的4、5列内容替换为空。
    2. 我们继续往下看设计单10,发现了一个严重的问题,设计单9的步骤有4步,而设计单10的步骤有2步,每个测试用例设计单内的步骤是不固定的! 若要清除设计单9的"测试结果"和"问题标识"列,需要将8~9行的4、5列内容替换为空,如果此时使用清除设计单9的代码去执行设计单10,就会将设计单10内容打乱。同理,若设计单11的步骤数为5,那就会出现遗漏一列没有清除掉。可以形象的理解为一把钥匙只能打开一扇门,此时使用固定的行数已经无法达到目的,我们就需要琢磨下怎么制作一把万能钥匙呢?

    建议先思考分析下问题再往下看,相对于得到鱼,我更希望大家得到渔!

    设计解决方案:
    下面为我个人的分析思路和设计解决方案:通过对设计单9、10的分析,每次清除的单元格的行数是不固定的,列数是固定的4、5,所以我只需要确定每次清除的行数是正确的,就能够达到最终目的。我先对比了设计单9、10,发现表格的前7行和后4行为固定模板,因此可以确定我要清理的行数一定是从第8行开始,结束的行数一定是倒数第5行(暂定为LastR行),此时就得到了要清理的行数:8行~LastR行,这就得到每次要清理的单元格坐标(行数和列数)。现在只需要将8~LastR行的4、5列内容替换为空即可。

    代码的实现

    Sub 批量清除表格某单元格内容()
    For t = 1 To ActiveDocument.Tables.Count
        LastR = ActiveDocument.Tables(t).Rows.Count - 4
        For r = 8 To LastR
    	    ActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""
    	    ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""
        Next r
    Next t
    End Sub
    

    注释

    Sub 批量清除表格某单元格内容()
    For t = 1 To ActiveDocument.Tables.Count
    '这里循环是为了清除所有表格,ActiveDocument.Tables.Count为统计文档的表格数
        LastR = ActiveDocument.Tables(t).Rows.Count - 4
        '这里LastR计算结果为倒数第5行,Tables(t).Rows.Count为统计表格的行数
        For r = 8 To LastR
        '这里循环是为了清除8行~LastR行的4、5列单元格
            ActiveDocument.Tables(t).Cell(r, 4).Range.Text = ""
            '单纯的文本替换,将表格t的r行,4列的文本替换为空
            ActiveDocument.Tables(t).Cell(r, 5).Range.Text = ""
        Next r
    Next t
    End Sub
    

    若不知道代码写哪?怎么运行?可以先阅读我的上篇文章(文章地址)Word宏的运用,先从宏的录制开始学习。

    结语

    以上举例只是VBA运用的一个案例-批量清除表格某单元格内容,至于其他的具体运用,有兴趣的可以自行了解。师傅领进门,修行靠个人!主要是对文档的分析,并不是所有情况都适合用VBA进行批处理,不要为了用VBA而去用VBA,不然只会适得其反!至于代码的实现并不复杂,可以去网上查阅API手册(Word Visual Basic for Applications (VBA) 参考 | Microsoft Docs)。解决问题的思路才是重要的!
    本文仅个人总结,存在不合理处,希望大家及时指出更正。下篇将举例说明Word怎么进行编号替换。编写不易,转载引用请说明出处。希望大家多多支持,在此表示感谢!

    展开全文
  • 第15章提供发布VBA应用程序的各种技术,包括菜单的使用、在工具栏中使用自定义图标、基本图库的实现(动态修改菜单文件)、在命令行或菜单中执行VBA程序、实现VBA程序的先选择再操作、更改AutoCAD应用程序的图标和...
  • word 2010 的使用Word中对的定义Word的优缺点Word运用实例---批量提取word数据结语 Word中对的定义 Microsoft Word中对定义为:“就是能...说到Word,就不得提出VBAVBA本质相同,都是使用VB
  • 中文版Excel.2007高级VBA编程宝典 1/2

    热门讨论 2012-04-06 16:00:16
     9.2.2 从“”对话框执行过程  9.2.3 用Ctrl 快捷键组合执行过程  9.2.4 从功能区执行过程  9.2.5 从自定义快捷菜单中执行过程  9.2.6 从另一个过程执行过程  9.2.7 通过单击对象执行过程  9.2.8 在事件...
  • 中文版Excel.2007高级VBA编程宝典 2/2

    热门讨论 2012-04-06 16:41:38
     9.2.2 从“”对话框执行过程  9.2.3 用Ctrl 快捷键组合执行过程  9.2.4 从功能区执行过程  9.2.5 从自定义快捷菜单中执行过程  9.2.6 从另一个过程执行过程  9.2.7 通过单击对象执行过程  9.2.8 在事件...
  • 01075执行菜单栏和工具栏的命令按钮 01076改变工作表单元格的快捷菜单 01077在工作表的任意位置快速显示快捷菜单 01078在单元格中输入公式 01079在单元格中输入数字 01080在单元格中输入文本 01081单元格区域引用 ...
  • 一、简单演示和代码展示本期宏的触发方式,选择事件触发——只要B1单元格的内容有变化,就会执行宏。沿用上期的数据库,增加了用变量去匹配数据的方式,并且保留了上期指定匹配的方式进行对比。在采取变量去匹配的...
  • 需求:用microsoft office excel软件制作有4个电子表格模板(如图)!... ,为了方便适用,想将4个模板打包成一个可执行的应用程序exe文件,运行exe...特别说明:模板中有VBA代码,打开模板后一定要能运行代码哦!!!
  • sql——存储过程&触发器(1/3)

    热门讨论 2015-07-29 16:08:25
    知道大家用Excel的时候用没有用过宏按钮。录制一段操作作为的内容(可直接写代码),给它起个名字,以后再点击这个按钮的时候自动执行录入的那段操作。 非常好用,简直是重复操作大杀器。 存储过程和宏...
  • 《CAD地形图常用实用工具套件》 150 多项在地形图测绘时经常使用的功能。可以执行外部Exe程序,也可以运行在CAD动态... 注:工具栏按钮运行时,MyCADPopWin.exe /T 必须在状态栏运行,能关闭,否则工具条能使用。
  • EXCEL 2007 宝典 附光盘文件

    热门讨论 2010-04-02 14:43:05
    range copy.xlsm:一个包含复制一个大小固定区域的VBA宏的工作簿。 range move.xlsm:一个包含移动单元格区域的VBA宏的工作簿。 select cells.xlsm:一个包含演示选中区域技巧的VBA宏的工作簿。 selection ...
  • 10-1-3 执行宏 10-1-4 修改宏内容 10-2 Access的事件程序 10-2-1 什么是事件程序 10-2-2 设置事件程序 10-2-3 测试事件程序 10-2-4 取消事件程序 10-3 宏程序的应用技巧 10-3-1 设置窗体中控件的事件与宏 ...
  • 10-1-3 执行宏 10-1-4 修改宏内容 10-2 Access的事件程序 10-2-1 什么是事件程序 10-2-2 设置事件程序 10-2-3 测试事件程序 10-2-4 取消事件程序 10-3 宏程序的应用技巧 10-3-1 设置窗体中控件的事件与宏 ...
  • 10-1-3 执行宏 10-1-4 修改宏内容 10-2 Access的事件程序 10-2-1 什么是事件程序 10-2-2 设置事件程序 10-2-3 测试事件程序 10-2-4 取消事件程序 10-3 宏程序的应用技巧 10-3-1 设置窗体中控件的事件与宏 ...
  • 10-1-3 执行宏 10-1-4 修改宏内容 10-2 Access的事件程序 10-2-1 什么是事件程序 10-2-2 设置事件程序 10-2-3 测试事件程序 10-2-4 取消事件程序 10-3 宏程序的应用技巧 10-3-1 设置窗体中控件的事件与宏 ...
  • 它支持众多文件格式,包括可执行程序文件、资源文件和基于 XML 的文件。文本可以被翻译为多种语言,包括亚洲语系(Unicode 码)以及书写方式为从右向左的语言,比如希伯来语和阿拉伯语。 Passolo 的使用非常容易,...
  • 登录和退出 15-8 为命令和宏设置安全 15-9 安全代码 15-10 未指定的命令 15-10 设置包含式安全 15-10 设置排除式安全 15-11 为图形显示画面设置安全 15-11 为OLE对象设置安全 15-12 为HMI标签设置安全 15-13 ...
  • 可以读写文件中的,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本文件 ...
  • excel的使用

    2012-11-25 17:06:01
    此时可察看即将绘制的函数图像,发现并是我们所要的函数曲线,单击“下一步”按钮,选中“数据产生在列”项,给出数据区域,这时曲线就在我们面前了(如图8)。图8需要注意:如何确定自变量的初始值,数据点之间...
  • xlsreadwriteII 4.0.0.52

    2011-06-27 09:31:15
    可以读写文件中的,使用XLSReadWriteII可以为控件比如:按钮、组合框等添加 导入及导出 从下列导入数据… Open Office Calc文档 CSV文件以及其他可以自动识别分隔符、小数分隔符和文本引用字符的文本文件 ...
  • arcgis工具

    2012-10-22 22:37:31
    应用工具CALCULATE AREA 或者使用VBA代码实现 新建字段并开启Advanced 写入代码,面积计算: Dim Output as double Dim pArea as Iarea Set pArea = [shape] 在最后的一个空格里面写入代码(即:字段名)pArea...
  • PROJECT 2007宝典 9/9

    2012-04-01 19:13:00
    本书最后的部分介绍如何自定义Project以及VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。  本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------...
  • PROJECT 2007宝典 8/9

    2012-04-01 19:11:45
    本书最后的部分介绍如何自定义Project以及VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。  本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------...
  • PROJECT 2007宝典 7/9

    2012-04-01 19:08:40
    本书最后的部分介绍如何自定义Project以及VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。  本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------...
  • PROJECT 2007宝典 6/9

    2012-04-01 19:05:22
    本书最后的部分介绍如何自定义Project以及VBA的相关信息,并通过一些案例来帮助您了解Project的使用情况。  本书内容丰富,融合了作者大量的实践经验,适用于各类项目管理人员使用。 目录 -------------------...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

vba按钮不执行宏