谎言背后女演员张驰:Excel 菜鸟谈VBA最最基础入门《原创》 - ExcelVBA程序开发 - Excel.2..

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 13:55:51
程序流程控制——Select Case语句
=============================
Select Case语句同IF语句一样,也是条件判断的语句。它的功能也可以用IF语句来完成。但是,当程序的条件太多,用IF语句来判断的话就存在一些不足了,比如程序是否美观?是否便于阅读?程序的执行效率等等。Select Case语句在执行的效率上,同IF语句相比,肯定是要快得多。
[Select Case语句的语法]
Select Case 测试表达式
Case 条件表达式1
语句块1
Case 条件表达式2
语句块2
Case 条件表达式3
语句块3
......
Case 条件表达式n
语句块n
Case Else
语句块Else
End Select.
当某个条件表达式与测试表达式相匹配时,则执行其后的语句块,否则执行Case Else后的语句块,然后结束Select Case块的执行。同IF语句一样,可以不要Case Else语句。
“如对A1单元格的学生成绩进行等级评定,小于等于30分的为差,30分到59分的为不及格,60分到79分的为及格,80分到89分的为良好,90到100分的为优秀。”用Select Case语句来解决就是: 复制内容到剪贴板 代码:
Sub test()
If [a1].Value = "" Then
MsgBox "A1单元格没有输入数字。"
Exit Sub '     退出程序
End If
Select Case [a1].Value
Case 0 To 29
MsgBox "差"
Case 30 To 59
MsgBox "不及格"
Case 60 To 79
MsgBox "及格"
Case 80 To 89
MsgBox "良好"
Case Else
MsgBox "优秀"
End Select
End Sub
需要补充一点的是,无论是IF语句还是Select Case语句,都是可以进行嵌套的!
[ 本帖最后由 ggsmart 于 2009-8-13 17:54 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
12楼 大 中 小 发表于 2009-8-12 21:41 只看该作者
NetExcel软件!会Excel就可以编程,快速实现报表系统、进销存、生产管理、工资绩效等系统!

引用:
ggsmart的补充说明:楼上写的代码,我只考虑分数是整数的时候,这里我只是举个例子,目的是让大家认识Select Case语句,因为没有考虑小数和负数的情况.一旦出现29.5之类的,就都全是优秀.所以,程序本身并不全面.为此,38度OFFICE技术论坛的老朽对代码进行了修定,提供了另一段全面的代码,非常感谢!
复制内容到剪贴板 代码:
'修订:38度:老朽
'网址:http://www.38duoffice.cn/bbs
'日期:2009-7-1 上午 11:22:21
Sub Test()
If [a1].Value = "" Then
MsgBox "A1单元格没有输入数字。"
Exit Sub '     退出程序
End If
Select Case [a1].Value
Case Is < 30
MsgBox "差"
Case Is < 60
MsgBox "不及格"
Case Is < 80
MsgBox "及格"
Case Is < 90
MsgBox "良好"
Case Else
MsgBox "优秀"
End Select
End Sub
[ 本帖最后由 ggsmart 于 2009-8-16 09:24 编辑 ]
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
13楼 大 中 小 发表于 2009-8-12 21:45 只看该作者
★ 好帖推荐、申请精华或加分、违规帖举报,欢迎“报告”,报告有奖!★
程序流程控制——For—Next 循环语句
=============================
什么是循环?
这里我们指的循环是指重复地执行某项动作(语句块)。
同学们在操场上跑步,两万米长跑,每圈400米。“呯”,枪一响,开始跑,一圈,两圈,三圈......直到跑满50圈才停止。这里,同学们就是在循环地在操场的跑道上执行跑步的动作。
我们来看一下For—next 的句式:
For 循环变量=初值 to 终值 step 步长
循环体1
[exit for]
循环体2
next 循环变量
解释:从开始到结束,反复执行For和Next之间的指令块,除非遇到Exit For语句,将提前跳出循环。其中,步长和Exit For语句以及Next后的循环变量均可省略,步长省略的时候默认为1。Exit for 语句是强制终止循环的语句,执行它后将退出循环,执行next后面的语句。
循环变量是一个变量,可以在循环体中对其进行修改,但一般就避免在循环体中对其修改。
对句式进行了初步的认识后,我们用这个句式来叙述上面学生跑步的问题。把它编成程序,20000米,要跑50圈,也就是要50次,同学们要在上面一圈,两圈。。。。直到满50圈才停止循环跑步,当然,如果你要提前退赛,就不用跑满50圈了。有了这个思想,程序可以写成:
Sub 循环跑步()
dim 圈数 as byte
for 圈数=1 to  50 step 1
If 学生.要求=退赛
exit for
End If
Next 圈数
End Sub
当然,这只是一个实例,帮助你对For—next语句的理解,下面我们来用一个实例来讲解For-next语句!
问题:求1到1000的自然数的和。程序编为: 复制内容到剪贴板 代码:
Sub mysum()
Dim Lsum As Long, i As Long
For i = 1 To 1000
Lsum = Lsum + i
Next
MsgBox "1到1000的自然数和为:" & Lsum
End Sub
[ 本帖最后由 ggsmart 于 2009-8-16 14:09 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
14楼 大 中 小 发表于 2009-8-12 21:46 只看该作者
★《Excel 2007实战技巧精粹》白金打造,重装上阵配套视频教程免费下载中★

以下代码由老朽提供
引用:
ggsmart说明:以下代码为38度OFFICE技术论坛的老朽版主提供,主要是帮助大家对VBA语句的认识.
复制内容到剪贴板 代码:
撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间偶数和()
Dim I&, J&
For I = 0 To 10000 Step 2
J = J + I
Next
MsgBox "1到10000之间偶数和为" & J
End Sub
复制内容到剪贴板 代码:
'撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间偶数和2()
Dim I&, J&
For I = 10000 To 1 Step -2
J = J + I
Next
MsgBox "1到10000之间偶数和为" & J
End Sub
复制内容到剪贴板 代码:
'撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间奇数和()
Dim I&, J&
For I = 1 To 10000 Step 2
J = J + I
Next
MsgBox "1到10000之间奇数和为" & J
End Sub
复制内容到剪贴板 代码:
'撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间奇数和2()
Dim I&, J&
For I = 9999To 1 Step -2'此句于2009年8月18日纠正
J = J + I
Next
MsgBox "1到10000之间奇数和为" & J
End Sub
引用:
感谢109楼artemis_xu朋友对以上代码的纠正!
复制内容到剪贴板 代码:
'撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间能被5整除的数之和()
Dim I&, J&
For I = 0 To 10000 Step 5
J = J + I
Next
MsgBox "1到10000之间能被5整除的数之和为" & J
End Sub
复制内容到剪贴板 代码:
'撰写:38度:老朽
'日期:2009-7-1 上午 11:40:59
Sub 求1到10000之间能被5整除的数之和2()
Dim I&, J&
For I = 10000 To 1 Step -5
J = J + I
Next
MsgBox "1到10000之间能被5整除的数之和为" & J
End Sub
[ 本帖最后由 ggsmart 于 2009-8-18 12:36 编辑 ]
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
15楼 大 中 小 发表于 2009-8-12 21:47 只看该作者
★EH梦之队《实战技巧精粹》系列图书火热发售,  配套视频教程免费下载中★

程序流程控制——For—Each 循环语句
===============================
有了前面对循环一词的理解,这里我们不用再多说,如果你知道了For—next语句的工作原理,这里再来学习For—each循环以及下面我们接着要讲的句式,那就相当简单了,同样的工作原理。
学会了吃苹果,那么离会吃梨的道路还会远吗?
呵呵,只是开个小小的玩笑,下面我们继续,首先来看看For—Each语句的句式:
For Eacn 元素变量 In 对象集合或数组名称
语句块1
[Exit For]
语句块2
next 元素变量
和上面For—next句式是一样的工作原理。
这里的“元素变量”是用来遍历集合或数中中元素的变量,它从集合或数组的第一个元素开始,直到最后一个元素,然后退出循环。
这里我们举个例子,把当前工作薄中工作表的名称写在A列,程序为: 复制内容到剪贴板 代码:
Sub shtname()
Dim i As Integer, sht As Worksheet
i = 1
For Each sht In Worksheets
Cells(i, 1) = sht.Name
i = i + 1 '让写入名称的单元格下移一行
Next
End Sub
[ 本帖最后由 ggsmart 于 2009-8-13 17:57 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
16楼 大 中 小 发表于 2009-8-12 21:48 只看该作者
★EH梦之队《实战技巧精粹》系列图书火热发售,  配套视频教程免费下载中★
程序流程控制——Do While语句
===========================
Do While也是循环语句,它分为两种情况,一种是把循环条件放在开头,一种是把循环条件放在结尾。
1、开头判断循环条件
语句格式:
Do Wihle 循环条件
语句块1
[Exit Do]
语句块2
Loop
首先判断循环条件,条件为真则执行Do到Loop之间的语句。
2、结尾判断循环条件
语句格式:
Do
语句块1
[Exit Do]
语句块2
Loop Wihle 循环条件
先执行一次Do到Loop之间的语句,再判断循环条件,满足条件则进行循环。
两种格式的区别:因为第二种格式是把循环体放在尾部,得先执行一遍语句再进行循环条件判断,所以,同样的条件,第二种格式的循环会比第一种多执行一次循环部份的语句。
我们用Do While语句来解决求1——1000的自然数的和的问题: 复制内容到剪贴板 代码:
Sub mysum()
Dim Lsum As Long, i As Long
i = 1
Do While i <= 1000
Lsum = Lsum + i
i = i + 1
Loop
MsgBox "1到1000的自然数和为:" & Lsum
End Sub
[ 本帖最后由 ggsmart 于 2009-8-13 17:58 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
17楼 大 中 小 发表于 2009-8-12 21:48 只看该作者
★ FoxTable,数据管理专家,轻松输入,轻松统计,轻松出报表! ★
程序流程控制——Do Until 语句
这个和Do While语句类似,它也有两种形式,学了Do While语句,再看这个,就可以无师自通了。下面就简单介绍下:
1、开头判断循环条件
语句格式:
Do Until 循环条件
语句块1
[Exit Do]
语句块2
Loop
2、结尾判断循环条件
语句格式:
Do
语句块1
[Exit Do]
语句块2
Loop Until 循环条件
执行Do 和Loop之间的指令,直到循环条件为真时退出循环。
直到循环条件为真时退出循环,这是Do Until 与  Do While的区别。而它两种语句格式的区别,也是第二种比第一种多执行一次循环部分的语句。
还是求1——1000自然数的问题,这次我们换用Do Untile语句: 复制内容到剪贴板 代码:
Sub mysum()
Dim Lsum As Long, i As Long
i = 1
Do
Lsum = Lsum + i
i = i + 1
Loop Until i > 1000
MsgBox "1到1000的自然数和为:" & Lsum
End Sub
是的,你看了上面的代码,觉得和楼上我们写的代码变化并不大。这里我用的是第二种格式(结尾判断)的语句,你可以试着用第一种句式写一写,或者改一改其他的问题.这里,我只是举个例子,路还得让你自己走!
[ 本帖最后由 ggsmart 于 2009-8-13 17:59 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
ggsmart
叶枫

Excel Home铁杆级

EH培训中心讲师
积分 2325  财富 3017 ¥  分享 4   鲜花 20   技术 10   注册时间 2008-7-4  总积分排名 343
发短消息加为好友
18楼 大 中 小 发表于 2009-8-12 21:49 只看该作者
★Excel服务器学习和下载园地★

程序流程控制——Go to 语句
===========================
Go to 在英语里是什么?相信大家的英语都比我好得太多,不用多说。其实Go to 语句的作用用定两个英语单词就说明问题了,“Go to 地点”就是去到哪儿的意思。
Go to 语句是将程序转到指定的标签的语句位置,然后继续往下执行。Go to 语句通常用来作错误处理。
同样的,还是用Go to 语句来做1——1000自然数的和: 复制内容到剪贴板 代码:
Sub mysum()
Dim Lsum As Long, i As Long
i = 1
x: '为go to 语句设置的标签,必须以英文状态下的冒号结尾
Lsum = Lsum + i
i = i + 1
If i <= 1000 Then GoTo x '如果i<=1000,则程序跳到标签X处
MsgBox "1到1000的自然数和为:" & Lsum
End Sub
注意:为Go to 语句设置的标签必须以英文状态的冒号结尾。
有人说,为了方便程序的阅读,规范程序,在程序里也避免少用Go to 语句,我很赞同,也希望你们能养成这个习惯。
[ 本帖最后由 ggsmart 于 2009-8-13 18:00 编辑 ]
附件: 您所在的用户组无法下载或查看附件
==欢迎光临==

UID 536933  帖子 1382  精华2  经验 1408   威望 0   阅读权限 70  在线时间 833 小时
查看详细资料
TOP
wangrw989

Excel Home初级

积分 116  财富 300 ¥  分享 0   鲜花 0   技术 0   注册时间 2007-12-7  总积分排名 3000+
发短消息加为好友
19楼 大 中 小 发表于 2009-8-13 22:39 只看该作者
★Excel服务器2010软件和教程下载★

虽然现在还没学会,见到楼主这么有心,一定要顶!!!
UID 378607  帖子 44  精华0  经验 89   威望 0   阅读权限 20  性别 男  在线时间 53 小时
查看详细资料
TOP
taller

版主

EH培训中心教务长
积分 15340  财富 28905 ¥  分享 0   鲜花 5   技术 31   注册时间 2003-7-10  总积分排名 13
发短消息加为好友
20楼 大 中 小 发表于 2009-8-14 01:43 只看该作者
★Excel服务器学习和下载园地★