|
楼主 |
发表于 2009-2-1 21:57
|
显示全部楼层
【2009.2.1】代码起步——我的程序(续)
上班第一天,好多店家还没开门,中午单位门前整个一条街啥吃的都没有,哎,第一天就吃方便面~~
今天我们继续看一个程序,还记得昨天的程序吗?当你选择了某一行的单元格,系统会将当前选中单元格自动切换为该行的第一个单元格,这样可以了解该成绩是哪个学生的成绩。今天我们继续在昨天的EXCEL文件的基础上,实现一个新的功能,就是当按到某一个单元格时,除了自动切换选中单元格外,将本行内容通过一个对话框显示出来。
EXCEL文件如下:
例1.rar
(7.52 KB, 下载次数: 4288)
代码如下:
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按钮,类似的可以放在这里的常量见下图:
该函数如果有返回值,则可能的返回值见下图:
为什么要用字符串常量替代该参数的数值类型的值呢?这样做主要是为了便于程序的阅读和程序代码的记忆。
最后一个参数更简单,就是一个字符串,作用是定义该对话框的标题。
大家运行下试试吧?!是不是很有趣? |
评分
-
3
查看全部评分
-
|