对象及事件

  1. 对象:代码和数据的结合;如何用代码表示对象?VBA用名词来表示对象,用动词来表示对象的方法;每个对象模型都包含两种对象模型:集合对象与个体对象,如Workbooks,workbook.
  2. 常用对象的写法:部分支持复数形式;
    1. 应用程序对象:Application;
    2. 工作簿对象:Workbook;
    3. 工作表对象:Worksheet;
    4. 单元格对象:Range;
    5. 图形对象:Shape;
    6. 图表对象:Chart;
  3. 自动调用属性和方法:名称后加一个小圆点;
    ActiveSheets.Range("A1").Activate
    ActiveCell.Value=34
  4. 对象除了属性和方法以外,还有事件;
    1. 事件的价值在于让代码按预定的条件自动执行;事件所关连的过程将在事件发生时自动执行,所以事件也称为自动化过程,它不需要人工调用,而且事件发生时,代码也随之执行,可见对象的事件赋予了对象更灵活的特征。
    2. 可以想像一下事件对于编程的重要性,以住需要单击菜单,键入快捷键来执行过程,而配合事件时可自动化执行,只要满足条件即可执行相应的代码;
    3. 事件的本质是对象在某些内部操作时允许开发者执行自定义操作;
    4. Excel事件包括:
      1. 应用程序事件;
      2. 工作簿事件;
      3. 工作表事件;
      4. 窗体事件;
      5. 窗体中的控件事件;
    5. 每个事件都依附在事件的全体对象之上;
    6. 事件过程的名称包含有两项内容:对象和动作;在代码窗口的上方有两个下拉列表,以下两项组合成事件的名称:
      1. “通用”:对象窗口;
      2. “声明”:过程窗口:事件的动作;
    7. 多数事件过程都有参数,这些参数通常与触发事件的条件相关;
    8. 事件过程的参数是不能修改的,事件过程的名称则允许修改;
    9. 设置事件是否自动执行:Application.EnableEvents=False
    10. 按时执行代码:Application.Onkey;
      Application.OnTime(EarliestTime,Procedure,LatestTime
  5. Excel提供了对象浏览器(视图→对象浏览器)(F2)(所有库中选择Excel,在类列表中出现Excel的子对象,而右边窗口则是该子对象的属性和方法)用于查看所有对象,包括Excel对象及其子对象、VBA对象,窗体对象;
  6. 当对象是一个容器时,它会包含若干子对象,使用序号参数引用集合中的子对象;VBA的对象具有层次性;
    Application.Workbooks("module").Worksheets("model").range("A1")
  7. Workbooks("财务表.xls"):表示保存过的工作簿(工作簿默认保存在c:\路径之下)
  8. 一个活动工作簿,每一个打开的工作簿对应一个活动工作表;
  9. 数据类型:表明了数据以何种方式储存于内存中,使用数据类型的目的是为了避免空间浪费,同时提高代码的执行效率。数据类型就是数据的容器,每个窗口都有自己的适应范围,并且对不同的容器采用不同的命名方式。

工作表操作

  1. 隐藏和显示工作表
    1. 隐藏工作表:Worksheet.Visible=xlSheetHidden;(可用右键)
    2. 深度隐藏工作表:Worksheet.Visible=xlSheetVeryHidden;(需要用VBA代码才可以显示)
    3. 显示所有隐藏的工作表:Worksheet.Visible=xlSheetVisible;
  2. 添加工作表:Worksheets.Add(Before,After,Count,Type)

 

select,selection

Activate,activecell

activecell.CurrentRegion.Select

 

工作簿操作

Workbooks.Open Filename:="", Password:=""

判断一个工作簿是否打开

For x = 1 To Workbooks.Count

If Workbooks(x).Name = "" Then

etc

End If

Next x

 

判断一个工作簿的存在

For x = 1 To sheets.Count

If Workbooks(x).Name = "" Then

etc

End If

Next x

find()方法:

使用Range对象的Find方法可以实现批量查找符合条件的单元格;

按行或按列查询,区别在于你找到的第一个符合条件的值会有区别;

replace()方法: