Microsoft技术社区联盟成员,全球领先的Excel2003/2007/2010门户,Office培训学习的最佳社区
设为首页收藏本站|繁體中文 切换到窄版

Excel Home论坛

 找回密码
 免费注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

魔方网表,Excel终结者,永久免费 Excel服务器2010软件和教程下载 培训课券免费大放送啦!
Excel不给力? 何不试试FoxTable! 2012年Excel免费培训班2-6月开课计划 新人必读:ExcelHome最佳学习方法 免费下载Excel行业应用视频教程
精粹:成为Excel高手的捷径 免费下载39集新Excel精粹视频教程 免费学习Excel数据透视表视频教程 入门必看《循序渐进学Excel》视频
超过100个Excel工具 免费学习Excel 2007精粹视频教程 新Office外观-不可思议 搞不定老板要的报表?我们来帮您
  • 328财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    89
    精华
    0
    分享
    0
    发表于 2009-2-1 15:06:09 |显示全部楼层
    楼主春节期间仍如此热心,向楼主致崇高敬意!!!!
  • 10022财富
  • 10鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    955
    帖子
    531
    精华
    1
    分享
    10
    发表于 2009-2-1 21:57:00 |显示全部楼层

    【2009.2.1】代码起步——我的程序(续)

      上班第一天,好多店家还没开门,中午单位门前整个一条街啥吃的都没有,哎,第一天就吃方便面~~
      今天我们继续看一个程序,还记得昨天的程序吗?当你选择了某一行的单元格,系统会将当前选中单元格自动切换为该行的第一个单元格,这样可以了解该成绩是哪个学生的成绩。今天我们继续在昨天的EXCEL文件的基础上,实现一个新的功能,就是当按到某一个单元格时,除了自动切换选中单元格外,将本行内容通过一个对话框显示出来。
      EXCEL文件如下:
      代码如下:
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If (Target.Column <> 1) Then
          Cells(Target.Row, 1).Select
          MsgBox "姓名: " & Me.Cells(Target.Row, 1) & Chr(13) _
              & "语文: " & Me.Cells(Target.Row, 2) & Chr(13) _
              & "数学: " & Me.Cells(Target.Row, 3) & Chr(13) _
               & "英语: " & Me.Cells(Target.Row, 4) & Chr(13) _
               & "物理: " & Me.Cells(Target.Row, 5) & Chr(13) _
               & "化学: " & Me.Cells(Target.Row, 6) & Chr(13) _
               & "地理: " & Me.Cells(Target.Row, 7) & Chr(13) _
              & "历史: " & Me.Cells(Target.Row, 8) & Chr(13) _
               & "生物: " & Me.Cells(Target.Row, 9) & Chr(13) _
               & "体育: " & Me.Cells(Target.Row, 10) & Chr(13) _
              & "总分: " & Me.Cells(Target.Row, 11) & Chr(13) _
             , vbOKOnly, "提示"
      End If
      End Sub
      大家对比昨天的代码就会发现,今天就加了一句代码,即上述代码中用红色标出的部分,这个就是今天要讲解的内容。
      首先,我们看到这个代码使用了一条语句,Msgbox,这条语句的作用是调用一个消息对话框,这个语句带有三个参数,各个参数之间都用逗号分隔。
      其次,我们看到该语句的第一个参数就占据了好几行,那么大家可能会问,不是在上一讲中提到了VBA识别判断是否是一条语句就凭借换行符吗?那么像这样在多行中的语句为什么是属于同一条语句呢?这个主要是因为有时候语句太长,如果在一行写可能会导致格式混乱且不容易阅读和理解,所以我们就使用下划线(即:“_”)来将未写完的代码转到下一行继续写,并告诉系统,该语句在这行没有结束,下行还是属于该语句的内容。让我们仔细看看第一个参数的内容,总体上是一个字符串,该字符串由个部分构成,每个部分占据了一行,每个部分都是由工作表中的列标题字符串组成,“&”符号表示两个字符串之间的连接符,通过该符号,后面跟了一串代码,看起来也像个函数的样子(为什么说像函数呢?也为有函数名、括号和括号里的参数),对,这个是一个集合,其中的“me”表示引用本工作表,例如这里就是指Worksheet1工作表,“Cells”表示本工作表的所有单元格的集合,其中的参数表示行序号和列序号,这个在昨天的讲解中讲过。其实这里省略了一个部分,完整的应该是这样写“Me.Cells(Target.Row, 1).Value”,即这里返回的是指定单元格内的值,为啥省略呢?由于Value属性是Cells集合的默认属性,所以可以省略不写。最后,还跟了一个函数,即“Chr(13)”,这个函数的参数为一个整数值,作用是返回ASCII编码表中对应该整数值的字符或不可打印符号的。比如这里的13,在ASCII表中就对应了换行符,那么通过这个函数就返回了一个换行符,这样就可以让每个列标题的部分在对话框中占据一行的位置。
      然后,我们看到第二个参数比较简单,“vbOKOnly”,该参数是一个字符串常量,由系统内部定义,这里的这个值表示该对话框只有一个OK按钮,类似的可以放在这里的常量见下图:

    该函数如果有返回值,则可能的返回值见下图:

    为什么要用字符串常量替代该参数的数值类型的值呢?这样做主要是为了便于程序的阅读和程序代码的记忆。
      最后一个参数更简单,就是一个字符串,作用是定义该对话框的标题。
      大家运行下试试吧?!是不是很有趣?
    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册

    帮助您是我的快乐!
  • 424财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    117
    精华
    0
    分享
    0
    发表于 2009-2-1 22:36:48 |显示全部楼层
    哇,真是好帖,像我这样的VBA菜鸟还真期待楼主你吃饭吃快一点好回来写啊~[em07]
  • 29财富
  • 0鲜花
  • 0技术
    • 等级 1EH新人
    积分排行
    3000+
    帖子
    5
    精华
    0
    分享
    0
    发表于 2009-2-1 22:36:49 |显示全部楼层
    好帖子。,。
  • 54财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    46
    精华
    0
    分享
    0
    发表于 2009-2-1 22:53:43 |显示全部楼层
    我缺课了,一定要加油补上。
  • 89财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    20
    精华
    0
    分享
    0
    发表于 2009-2-2 15:40:51 |显示全部楼层
    太精彩了,还没来得及看全,先顶一下再说!
  • 517财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    128
    精华
    0
    分享
    0
    发表于 2009-2-2 19:51:01 |显示全部楼层
    楼主加油啊
  • 10022财富
  • 10鲜花
  • 9技术
    • 等级 3EH中级
    积分排行
    955
    帖子
    531
    精华
    1
    分享
    10
    发表于 2009-2-2 22:12:49 |显示全部楼层

    【2009.2.2】代码起步——我的程序(续)

      这两天陆续看到朋友们回复,有的说越来越难于理解了,有的说讲解得太快,快要跟不上了,还有的说前面的差不多都快忘完了......哈哈,告诉大家,有这个感觉是很正常的,看来我们有必要停下来解解惑了~~
      还记得这两天我们的代码吗?见下图:

      我们回头再来看看VBA代码到底是如何与前台的EXCEL工作表联系起来的。工作表在EXCEL里是一个独立的对象(还记得啥叫对象吗?),名字叫“Worksheet”,对象有很多属性、方法和事件,当然,还包括子对象集合,在这段代码里,我们用到了工作表的一个事件,即SelectionChange事件,这个事件的作用我们已经在上一讲谈过了,即当被选中的单元格发生变化的时候触发该事件并执行其中的代码。对于其他我不想多说了,今天我就想重点谈谈子对象及集合。在EXCEL里有很多对象,到底这些对象是如何组织起来的呢?请看下图:

      从这张图里我们看到了很多对像,他们按照一定的级别有规律的被组织成树形排列。尽管在Excel的对象模型中包括了100多个对象,但你会发现最常用到的主要集中在如下五个对象上,Application、Workbook、Worksheet、Range、Chart,这并不是说用不着使用其他对象,只是说明这五个对象最为常用。
      Application对象代表Excel。使用Application对象可以控制应用程序级的设置、内置的Excel函数以及高级方法,例如InputBox方法。Workbook对象是指Excel中的工作簿,即是说Excel文件。在VBA环境中,不说打开一个文件,而称为打开一个工作簿;也不说保存一个文件,而称为保存工作簿。学习Excel时最先了解到的其中一点就是,Workbook中包括Worksheet。Worksheet是Workbook中独立的页,数据就保存在Worksheet中。Worksheet中包括单元格(Cell)。你也许会认为不得不编写大量的代码以对单元格对象进行控制,但是,实际上没有单元格这样的对象。有单元格属性,将在后面的学习中学到。相反,你将对范围(Range)对象进行处理。范围对象是指一个或者多个单元格。大多数Excel用户都使用Excel的图表功能,所以你经常需要处理图表(Chart)对象。用“图表向导”创建图表时所做的一切都可以通过VBA代码做到。
      那么什么是集合呢?集合就是多个对象组织在一起的一种引用方法。比如在一个工作簿Workbook对象中,就默认包含了三个Worksheet对象,那么在一起引用这三张工作表的时候就采用引用集合的方法来写代码,即Workbook.Worksheets,这里的Worksheets就代表了工作表的集合。集合在使用中有一个属性经常被用到,就是Count属性,这个属性的作用是返回该集合中对象的个数,比如你想知道一个工作簿中当前包含了几张工作表,就可以通过Workbook.Worksheets.Count来得到。集合还有一个用法就是如果需要单独引用其中的一个对象时,可以通过指定索引值或该对象名称来引用,例如需要引用工作簿中名称为“考试表”的一张工作表,默认索引为3,那么可以这样引用,即Workbook.Worksheets(3)或者Workbook.Worksheets(“考试表”),现在大家再看前面讲解的代码的时候是不是有了更清晰的理解呢?
    附件: 你需要登录才可以下载或查看附件。没有帐号?免费注册

    帮助您是我的快乐!
  • 112财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    25
    精华
    0
    分享
    0
    发表于 2009-2-2 22:52:37 |显示全部楼层
    向楼主的热情,致敬!~!
  • 413财富
  • 0鲜花
  • 0技术
    • 等级 2EH初级
    积分排行
    3000+
    帖子
    109
    精华
    0
    分享
    0
    发表于 2009-2-3 01:44:52 |显示全部楼层
    ::D LZ辛苦了!
    好帖!

    发表回复

    您需要登录后才可以回帖 登录 | 免费注册

    发帖时请遵守我国法律,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任。
    回顶部