前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

Excel VBA学习笔记(五):IF 语句语法规则

VBA中非常常用的条件判断语句,语法结构也很明了:

IF 条件 Then
  语句
Else
  语句
End IF

通常教材上都只写了这个语法结构。可是学习别人的代码时,发现有很多并不是按照这个语法来写的语句。如IF 条件 Then 语句;后面不写END IF结束语句。今天突发奇想写了个这样的:

If Rng.Value Like Format(Date, "m月d日 aaaa") Then Exit Sub
Else: Rng.Offset(1).Value = Format(Date, "m月d日 aaaa")

结果编译报错,后带上END IF编译还是报错。

无法,只得改语法格式:

If Rng.Value Like Format(Date, "m月d日 aaaa") Then 
	 Exit Sub
Else  
   Rng.Offset(1).Value = Format(Date, "m月d日 aaaa")
End IF

编译通过了。那么什么情况下能省略END IF呢?还有我这么写的错误显然不在END IF,是错在哪了?

一番搜索,找到IF语法比较详尽的说明。IF语句有两种模式:

一、单行模式:If 条件 Then 语句 [Else 语句] (Else 可省略),就是在一行内写完(带冒号写成一行是不算的);这种写法Then、Else语句不可换行,语句结束不需要END IF,画蛇添足添上END IF会报错。这就是省略END IF的写法。

二、块模式:就是本文开头所列语法结构。

If  条件 Then
  语句
[Elseif 条件 Then
   语句]      ‘中括号代表可省略项
[Else 
   语句]
End IF

我上述语句报错的原因由此明了:Then 后面检测到语句,判断为行模式,即这一IF语句已在此结束;再检测到Else 语句就认为没有IF了。就是说Else换行写,就是块模式,这种模式下 Then后面接的语句 必须写在下一行(THEN后用冒号带接语句也不行)。之后测试了Else 后的语句写成“Else:”语句行不行?测试通过,Else:是可以的。(ElseIF 不需要单独配对END IF。)

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言