其实Excel就是触发和指定单元格

学习路线

一、理解工作簿、工作表、单元格等概念,弄清楚对象、属性

二、了解软件操作方式,比如怎么调出开发模式、如何试运行等

三、掌握常用的函数

四、触发事件

五、熟悉循环的使用

六、实例操作

 

一、概念

对象

Workbooks:工作簿

worksheets:工作表

Range:单元格区域

cell:单元格

 

 对象就是存在的东西,是VBA处理的内容,包括工作薄、工作表、工作表上的单元格区域、图表等等。对象可以相互包含,就像一个文件夹里可以包含多个文件夹一样,而这个文件夹又可以被其他的文件夹包含,一个工作薄对象可以包含多个多个工作表对象,一个工作表对象又可以包含多个单元格(或图表,图形等),这种对象的排列模式称为Excel的对象模型。
----------
    集合这个概念经常遇到,我理解的集合是对相同类型的对象的统称。
    某中学有5000个学生,名字各不相同,我们对他都统称为某中学的学生,而不和一一去叫他们的名字,"某中学的学生"在这里是集合。

    对象的引用,在Excel里,Workbooks集合包含在Application对象里,当我们要引用某工作薄的时候,要遵循从大到小的规则。跟表示硬盘里的某个文件的位置一样,比如我们想引用D盘“我的文档”文件夹下的名为“我的VBA课程.doc”文件时要输入的是:
             D:\我的文档\我的VBA课程.doc
    同样,如果我们要引用名称为“mybook.xls”的工作薄时就是:
            Application.Workbooks(“mybook.xls”)
    和引用文件不同的是,VBA里使用的分隔符是点。
    同理,当我们引用“mybook.xls”里面的工作表“mysheet”时应是:
            Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”)

    可以继续延伸到下一层,引用“mybook.xls”里工作表“mysheet”里面的单元格区域“A1:D10”:
            Application.Workbooks(“mybook.xls”).Worksheets(“mysheet”).Range(“A1:D10”)

    但是并不是每一次引用都必须这么呆板,就像猪八戒不用每一次都去爬下水管道。如果我们引用的是活动对象,也就是被激活的对象,引用就可以进行简化。
    如果是mybook工作薄是激活的,引用可以简化为
       Worksheets(“mysheet”).Range(“A1:D10”)

    如果mysheet当前也是激活的,引用甚至还可以简化为Range(“A1:D10”) ,也可以直接输入[A1:D10] ,如果引用的单元Range是单个的单元格,还可以用Cells(行号,列号)的引用方式。

属性

 每一个对象都有属性,一个属性就是对一个对象的一个设置。

 

 

 

 

  猪八戒背着媳妇高秀兰回自己的紫云洞,猪八戒的媳妇就是对象,“高秀兰”就是猪八戒的媳妇的一个属性(name属性),引用对象的属性同样也要用点来分隔。
     猪八戒的媳妇.name=高秀兰

     别闲着,还是动动你的右手,打开一个工作表,Alt+F11(千万别说你不知道这个快捷键是干什么,要不我保证被你气个半死),如果立即窗口没有打开,按Ctrl+G打开,在里面输入:

 Msgbox Worksheets(1).name

回车。

<ignore_js_op>



      Worksheets(1)和Worksheets(“sheet1”)有什么区别?
      Worksheets(1)表示Worksheets集合里的第一个工作表。
      Worksheets(“sheet1”)表示Worksheets集合里名为"sheet1"的工作表。

     至于Msgbox是什么,那就自己问Help了,在立即窗口里用鼠标左键把Msgbox抹黑,按F1,就弹出Help里对它的说明了。
    抹黑代码,再按F1即可看到相应的帮助。

<ignore_js_op>


      一个对象有哪些属性我们可以在属性窗口里查看,要修改一个对象的某种属性,如名称、显示状态、颜色等等,也可以在属性窗口里进行修改,当然我们还可以利用代码进行修改。改当前工作薄里的第三个工作表的名称为“这个名字是我用VBA改的”,想想怎么写代码?
      把你的代码输在立即窗口里,回车,看看效果,你做到了吗?

 

方法

   每一个对象都有方法,方法就是在对象上执行的某个动作。  
    和属性相比,属性表示的是对象某种状态或样子,是静态的,就像是语文里的名词、形容词和副词,而方法则是做某件事的一个动作,就像动词,对象和方法同样用点来分隔。
    例如Range对象有有一个方法是Select,他的作用是选中指定的Range(单元格区域)对象,在立即窗口里输入代码:
    回车,可以看到D1:F10已经被选中了。

<ignore_js_op>
 

件就是由用户或者系统触发的,可以在代码中响应的一段代码

比如,当我们移动鼠标,打开工作薄,激活工作表,选中单元格,改变单元格的数值,点击按钮或窗体,敲击键盘等等这些都会产生一系列的事件,通过编写代码响应这些事件,当发生此类事件时,程序代码就会进行相应的操作。
      这样解释你会不会有些晕?感觉又一次进入了外星人的世界?还是举例说明,我们需要当激活某工作表的时候,自动弹出一个对话框,告诉我们激活的工作表的名称。
       (1)打开一个工作表,Alt+F11打开VBE窗口,在“工程对象管理器”窗口里双击你要进行设置的工作表,使其代码窗口显示。               
       (2)左面选择对象Worksheet(工作表对象),右面选择Activate事件,我们可以看到在代码窗口里系统已经为我们自动输入了一段代码。

  1. Private Sub Worksheet_Activate()
  2. End Sub


提醒: 初学的我们,不必完全记住对象及事件的名称,也不必手工输入,系统早为你准备好了,你可以在代码窗口里进行选择,左边是对象,右面是事件,如果你想知道某个对象(例如工作薄、工作表、窗体等)有哪些事件,只需要双击这个对象,然后在代友窗口里查看即可。我们需要做的只是:当自己需要它的时候,知道打开哪个箱子把它拿出来即可.



<ignore_js_op>


        废话说完,再回到问题里:
  要达到问题的目的,我们只需要在已给我们列出的两段代码中间加入需要进行操作的代码就可以了,这里我们需要的是一个对话框来提醒,对了,还记得Msgbox吧?
     输入代码:

  1. MsgBox "你现在激活的工作表名称是:" & ActiveSheet.Name
复制代码

上面的代码相信你应该能看懂吧?        
       &和我们工作表里的函数是一样的,连接文本的作用,Activesheet.name是当前活动工作表的名字(用了一个name属性)。