五、vba事件

2021-03-30 06:27

阅读:973

标签:菜单   eve   日期   http   对话框   round   文件格式   false   问题:   

一、with语句

  演示宏录制单元格格式设置,讲解with语句;对照单元格字体设置、对齐设置等菜单与录制的宏代码。

二、vba事件问题导入--高亮显示案例

  问题1结合文件“DEMO-1-从格式设置说起-(with)语句”描述需求:当表格很大时,希望点到某格时,该行高亮显示,同时之前其他行的高亮显示消失。
  解决方案1:录制宏完成代码:(1)让本表不亮 (2)让某行高亮

  新问题:每次操作都要运行宏,很麻烦。目前为止运行宏有两种方式:(1)主动选择宏运行;(2)设置按钮关联宏,主动点击

  应用vba事件解决:
  1、双击vba sheet1,在右上方选择worksheet,selectionchange,将上述代码贴入;
  2、也可将代码留于模块中,在上述位置 "call 宏名"

三、自动筛选案例
  问题描述:根据range(“I2”)内容筛选并将筛选内容放置于右侧区域
  解决方案:宏录制代码后(1)设置按钮关联宏  (2)用事件"change"

  注:(1)事件“change”意味着表中任意变化都会触发事件;
    (2)由于(1),容易引起死循环,因为宏中代码会引起表中变化,继而再次触发事件。因此在任何事件的宏中,应
      先“application.EnableEvents = False”,结束前“application.EnableEvents = true

四、自动更新案例
  问题描述:表“自动更新”中,用数据透视表功能统计各月各地区的销售统计数据,但若源数据发生变化,透视表需点“刷新”,若透视表很多,会较麻烦。
  演示透视表:(1)构建数据透视表:插入-->数据透视表-->新工作表,选择订购日期、所属区域、金额;
        (2)任选订购日期单元格,数据透视表工具-->“将所选内容分组”-->“步长”选“月”
        (3)观察源数据变化后,透视表未变化,点击数据-->全部刷新后,透视表更新
  解决方案:录制全部刷新的宏,选择数据透视表所在worksheet的activate事件。

五、工作薄事件
  概念引入:观察vba中thisworkbook(代表本工作薄文件)的事件,演示“open”事件,mgsbox “向您请安!”    讲解文件保存格式
  问题描述:文件一旦保存后,无法还原之前版本,因此对于极重要的文件,希望(1)在保存之前自动将修改前版本备份到指定目录,(2)且文件以当时时间命名。
  解决步骤:(1)确定用thisworkbook内的beforesave事件;
       (2)演示now()函数,在工作界面设置单元格格式-->自定义,设置为"yyyymmddhhmmss",并可用text()转化数据类型
       (3)测试用宏将当前时间写入单元格:range("a1")=format(now(),"yyyymmddhhmmss")
       (4)演示用宏将当前文件的副本另存到指定目录:ThisWorkbook.SaveCopyAs "d:\data\1.xls"
          注意:(i)saveas会使得当前工作文件变为1.xls,因此需用savecopyas(ii)保存格式需与当前文件格式一致
       (5)将"d:\data\1.xls"中的1改为变量"d:\data\"&format(now(),"yyyymmddhhmmss")&".xls"

六、练习题:
  问题:为作业表制作密码验证。
  要求:(1)打开文件时只显示登录界面表隐藏其他所有表,弹出对话框输入密码。输入123则显示张三的三张表,输入456则显示李四的三张表。
     (2)关闭文件时将除“登录”表外的其他表全部隐藏
  演示:录制宏,隐藏工作表的代码 Sheets(i).Visible = False

附录:常见工作表事件及工作薄事件
 
 注:还有控件等都有事件

技术图片技术图片

 

 

 


  

 

五、vba事件

标签:菜单   eve   日期   http   对话框   round   文件格式   false   问题:   

原文地址:https://www.cnblogs.com/y2000zhang/p/13586838.html


评论


亲,登录后才可以留言!