最新WPS办公软件学习教程_免费企业办公软件下载_金山WPS Office官网论坛

 找回密码
 
查看: 7088|回复: 13

[VBA/VBS教程] 【VBA For ET 教材连载系列】三十七

[复制链接]

397

主题

72

听众

3057

积分

测试体验团员

Rank: 14Rank: 14Rank: 14Rank: 14

该用户从未签到

金币
3
威望
5028
帖子
2011
精华
11

特殊贡献奖 最佳教程奖 活跃会员奖

发表于 2009-10-14 09:59 |显示全部楼层
分享到: 新浪微博 腾讯微博
    条件语句与工作表函数IF一样,可以多层嵌套,从而满足多条件的需求。本节讲述条件语句的嵌套应用.
( Y+ X, \* D4 X3 \+ u3 p" u    条件语句的嵌套分两种方式,现分别进行介绍如下。
% A/ g  B* {( N# J" ?" jl
* q! @8 v; B6 o4 u
方式一& c/ j1 }2 ^+ C- {& d
IF Condition Then1 z( J8 S2 ]% Y5 \8 e
) F! }. c! r7 @, j+ b$ t0 \3 p* j
[statements]
% \6 v. z$ X2 b2 a) O, n
[ElseIF condition-n Then( \% f% \0 W1 _. n

) |, D3 [  x) h8 Z[elseifstatements] ...
+ X7 k. P3 Z/ ?  A; }
[Else
7 q/ w6 ~/ C- I* ^: K
; S# Q% g6 U* f# ^' e[elsestatements]]

# k. l+ o- Y1 Y/ f1 K' g0 REnd IF4 U9 z* }( Q* W# N- _: R* m) o
    语法列表中省略号代表可以继续添加更多的条件和对应的执行语句。
- V7 g( e1 L* r: q) M    例如:根据图37.1所示的根据成绩对姓名所在单元格进行着色,如果成绩小于60(不含60),则填充灰色背景,如果在60(含)到100之间,则填充淡蓝色背景,如果100分则填充红色背景。完成这个需求可以利用条件语句嵌套完成,代码如下:
' g1 J5 i" h7 P# @: @* {___________________________________________________________________
. s9 X* J" D* ^7 J# _4 i
- M; u7 u$ }$ }& jSub 根据成绩设置背景色()
: H8 Z. n# D  _) n1 ]" o% A- c'
遍历所有成绩
' J: V0 F2 y) i5 a& F2 r
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row

! R9 A  b! }$ g, @3 q'
如果成绩小于60 第一层IF

% l% }1 V$ ]  M# d) p2 HIF Cells(i, "B") < 60 Then

( l% }# M* `+ J8 e; \6 M'
单元格颜色地址设置为15
6 T; k: b  U8 p0 s. E* `* v
Cells(i, "A").Interior.ColorIndex = 15

( s( J  m+ |* R/ o; ?'如果成绩小于100(相对于60100但不包括100,第二层IF6 H1 G* ^, [! w
ElseIF Cells(i, "B") < 100 Then' U( {9 z6 H$ S# I2 k9 ^2 _
'
单元格颜色地址设置为17
3 w2 J2 b/ I+ \2 d. ^: ^; B
Cells(i, "A").Interior.ColorIndex = 17
3 @# u( m+ l' }7 B
Else'
否则
& t) x3 s& t' }& H; N/ F8 d
'
单元格颜色地址设置为13 ,代表满分100
1 n9 B. T# G+ C
Cells(i, "A").Interior.ColorIndex = 3
# h. `) z6 |9 B+ e# j" B+ Y1 ]
End IF

9 v) U. y6 p6 c( L3 r8 s& I% wNext i

& _4 b8 [8 k, a' L9 d4 j, b$ EEnd Sub# ]1 |1 X: j4 ~% K
_______________________________________________________  A) }- N+ f) q9 X1 G( X
2 B/ p9 o! a1 j# I$ u
    以上过程中IF语句设置条件为“<60”,然后将其背景色设置为灰色;而ElseIF语句则是在前一个IF的基础上进行的判断,所以它的条件虽然是“<100”,而实际上是大于等于60且小于100这个范围;最后的Else语句则作用于100分成绩对应的单元格。
) K$ H; g5 b+ M1 S0 A, B# q% P执行过程后,其效率如图37.2所示。( ~0 e. J7 k& X. C

7 M3 x" [0 P: ?0 k, H- Y0 T' q
  W) x( T4 V* }. E& k      
1 [$ M1 a* e. r
37.1 成绩表  B5 C3 {1 S6 O! t. X
9 p# O  z4 L: g

) i' k$ t7 {/ b" z37.2根据成绩对姓名列着色

' q8 v4 a: K$ p3 U# q7 f
, B* z* X: u6 T% ?2 B# xl* p' _+ G0 c# c8 o
方式二
, Z0 A5 q1 s% j- T5 {IF Condition Then
9 e; R) L9 z$ [# k1 y! I9 a; r+ o% ^6 `/ Z7 h! ~
IF Condition Then
6 E; z2 b: \7 {, h) p% Q
1 h& z& c# _. n& p
[statements]

, Q, i$ }9 y1 l/ N5 R1 M, l9 U7 q" D5 x
[Else
8 g  H. }$ c/ E8 K) \1 @

8 X' h; O- H) {! y& o4 B2 a0 }8 e+ C[elsestatements]]

7 p. F% W4 U- e4 G  _: G- `6 T3 }3 d1 a
End IF
  k8 c4 g1 y3 D. e. k
End IF6 q8 O; t) \2 J" }1 i
    本嵌套方式表示在“IF”与“End IF”之间置入若干个“IF…Then…Else…”条件语句,那么有多少个“IF”就会有多少个“End IF”。
% R9 D/ o2 a7 t& W    使用此类语句通常是指要满足某条件后再执行一个或多个执行条件语句。里面的条件语句既可以使用条件与执行语句在同行的句式,也可以使用条件与执行语句不在一行的句式。  p" O+ v! w: N2 x
    假设每周一到五是15:00开会,周六则13:00开会,如果运行程序时间在开会前10分钟以内,那么弹出提示窗口.可以通过以下代码来实现.:8 C# {3 p$ F& N% e; H9 S3 F
________________________________________________________________3 M9 ~( T) j2 q
$ I6 f3 D# U( ?7 B) }
Sub 提示()
" l9 c* K9 s1 B& s: j/ R% A/ RIf WorksheetFunction.Weekday(Now(), 2) < 6 Then
6 B, t* V5 Q9 V* K% FIf Format(Now(), "hh:mm:ss") >= "07:50:00" Then MsgBox "
会议时间15:00快到了,请你做好准备"

( A- T( @: }$ K7 Y  \Else+ R3 {. J! d# B4 ]: P* g7 U" A
If Format(Now(), "hh:mm:ss") >= "12:50:00" Then MsgBox "
会议时间13:00快到了,你做好准备"
3 R) j7 L& c8 W' T. V, z# F
End If
0 Y( s4 `- h4 @9 o* jEnd Sub
* T% m3 A# ]% t3 G2 h_________________________________________________________________
3 j, q3 {6 `' Y
  T- {6 q& a+ g; U6 l  M& y    以上程序是IF Then的嵌套运费,在条件判断的句式中,IF的作用无可替代.

% m$ r7 O$ ~' i. x* b
& c# l  _$ Q# m4 q. x" v[ 本帖最后由 wendy   于 2009-12-23 16:03 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,

0

主题

0

听众

312

积分

LV.4

Rank: 4

该用户从未签到

金币
6
威望
838
帖子
66
精华
0
发表于 2013-9-5 11:24 |显示全部楼层
继续学习。' q0 d, @( z; x( o8 U4 O
回复

使用道具 举报

1

主题

0

听众

80

积分

LV.2

Rank: 2

该用户从未签到

金币
1
威望
125
帖子
61
精华
0
发表于 2013-9-7 21:20 |显示全部楼层
学习了,标记一下
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2014-12-14 14:48 |显示全部楼层
了解一下        
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2015-4-12 09:56 |显示全部楼层
jsdbplt 发表于 2014-12-14 14:48 4 j/ e- @7 b7 C3 a: V0 J" s
了解一下
! ^; w0 p$ }. q3 U
学习一下         
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2015-7-26 12:29 |显示全部楼层
jsdbplt 发表于 2015-4-12 09:56
# L  p/ h; z2 _+ M学习一下

1 f0 \/ Y9 P5 F2 r& }' T参考一下              
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2015-11-22 08:38 |显示全部楼层
再看一下              
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2016-3-20 06:58 |显示全部楼层
jsdbplt 发表于 2015-11-22 08:38 , K% B2 H- [9 \$ X0 g; a( L
再看一下

9 C+ I0 v6 ~: o: L继续看           
回复

使用道具 举报

3

主题

3

听众

1万

积分

LV.15

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

签到天数: 1187 天

[LV.10]以坛为家III

金币
2350
威望
27020
帖子
3380
精华
0

优秀会员奖

发表于 2016-3-20 10:43 |显示全部楼层
/ J. G' Y$ l( A6 Y2 ]1 u
来学习教程!支持!
回复

使用道具 举报

110

主题

18

听众

2万

积分

LV.17

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

签到天数: 1181 天

[LV.10]以坛为家III

金币
2069
威望
66760
帖子
4062
精华
0

优秀会员奖 活跃会员奖

发表于 2016-7-17 09:32 |显示全部楼层
看一下              
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 更多账号登录:

快速回帖:

fastpost

WPS论坛更新日志|WPS Office官方论坛     

GMT+8, 2017-11-20 08:05

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部