excel VBA,case是不是和if elseif else一样属于优先判断,找到后面就不再判断了?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了excel VBA,case是不是和if elseif else一样属于优先判断,找到后面就不再判断了?相关的知识,希望对你有一定的参考价值。

if ..... then....
elseif ...then,,,
else .....
end if

select case x
case:.....
case:......
case:....
end case
一样都属于,找到符合条件的,后面的判断就跳过了。
最后打错
应该是:
select case x
case:.....
case:......
case:....
end select
自回答,效果是一样的,书上看到了



运行时,从第一个判断开始,按顺序向下读,当条件匹配时,执行条件匹配后面的语句,直到下一个ELSE 或 CASE 之前,然后就跳到 end if 或 end select

两个使用的方法一样,但条件较多时,select更简便,例:
Select Case x
Case 1 To 4, 7 To 9, 11, 13, 21 To 25, 27, 29
x = x * 2
Case 5 To 6, 10, 12, 14 To 20, 26, 28, 30
x = x * 3
Case Else
x = x * 4
End Select
你可以试着用if ……then 语句试试
参考技术A 全部转换为大写
MsgBox StrConv(strInfo, vbUpperCase)
或者UCase和LCase来转换

小写:97-122
大写:65-90
用ASC和CHR函数来取字符和字符代码循环比较就可以了

网上查到这些,我对VBA也是半桶水的,希望这能帮到你一点点了!我不会引用ASC码,应该有ASC码代替“OK”字符应该就行了!
参考技术B 只会选择一个case 运行

if…else语句嵌套if…ELSE语句和case语句实现分支选择的区别

If…else语句是从上到下判断,当条件满足,则执行语句体;

嵌套if…ELSE语句是当外面的if条件成立才判断里面的if;

Case语句是只需访问对应索引号的表项从而到达定位分支的目的;

if else:

if…else if语句和多个if语句的区别还是很大的,if…else if在任何一个环节满足条件的时候就将会终止判断,只处理一个满足条件的情况;而对于多个if语句,将会对每一个判断条件进行判断,自然而然会导致程序的执行效率降低。在多个判断条件的情况下,使用if…else if语句相对于使用多个if语句而言,可以减少程序的判断次数,提高效率。

语法:
if(条件1)
	语句1;
	//如果条件1为真,则执行语句1;
else if(条件2)
	语句2;
	//如果条件1为假且条件2为真,则执行语句2;
else if(条件3)
	语句3;
	//如果条件12都为假且条件3为真,则执行语句3;
	.
	.
	.
else
	语句4;

最终只有一个出口.即当满足条件1时,执行语句1.当不满足条件1时,往下走,判断是否满足条件2,如果还是不满足,则继续往下走,一直走到else语句,说明之前的条件都不满足,最终执行语句4;

嵌套if…ELSE:

我们可以在if语句内嵌套if语句。同样,我们也可以在if语句内嵌套if-else语句,在if-else语句内嵌套if语句,以及在if-else语句内嵌套if-else语句。这种灵活性也很容易让人混淆程序。


语法:
if(条件1)
  {
      if(条件2)
      {
          语句1//如果条件1为真,且条件2为真则执行语句1;
      }
      else
      {
          语句2//如果条件1为真,且条件2为假则执行语句2;
      }
  }
else
    语句3
    //如果条件1为假则执行语句3;

switch case:

在多个判断条件的情况下,不仅可以使用if…else if语句,还可以使用switch case语句。一般情况下,当判断条件较多的情况下,使用switch case语句的效率会高于使用if…else if语句。switch…case与if…else if的根本区别在于,switch…case会生成一个跳转表来指示实际的case分支的地址,而这个跳 转表的索引号与switch变量的值是相等的。从而,switch…case不用像if…else if那样遍历条件分支直到命中条件,而只需访问对应 索引号的表项从而到达定位分支的目的。所以从效率上来说由于if…else if的遍历性,代码执行效率是不高的。

语法:
   switch(表达式){
     case1:
       //表达式的值和 值1匹配上了,需要执行的代码;
       break;
     case2:
       //表达式的值和 值2匹配上了,需要执行的代码;
     break;
     case3:
       //表达式的值和 值3匹配上了,需要执行的代码;
     break;
     default:
       //如果表达式的值和以上的case后面的值都没有匹配上,那么就执行这里的代码。
       break;
   }

从表达式值等于某个case语句后的值开始,它下方的所有语句都会一直运行,直到遇到一个break为止。随后,switch语句将结束,程序从switch结束大括号之后的第一个语句继续执行,并忽略其他case。假如任何一个case语句的值都不等于表达式的值,就运行可选标签default之下的语句。假如表达式的值和任何一个case标签都不匹配,同时没有发现一个default标签,程序会跳过整个switch语句,从它的结束大括号之后的第一个语句继续执行。

以上是关于excel VBA,case是不是和if elseif else一样属于优先判断,找到后面就不再判断了?的主要内容,如果未能解决你的问题,请参考以下文章

verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗

“else if”比“switch() case”快吗? [复制]

excel VBA用户定义函数中是不是可以有多个if语句

解决Excel vba case过程中遇到的代码难题

VBA 操作 Excel 生成日期及星期

if else和switch case那个效率更高一点