找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27994|回复: 9

[问题求助] [已解决]VBS中可以使用VB的IIF 函数吗,怎么使用?

[复制链接]
发表于 2011-7-10 15:39:57 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-8-12 22:04 编辑

VBS中可以使用iif吗,怎么使用?
其实的目的是为了获取iif的返回值。
  1. On Error Resume Next
  2. a=15
  3. Function IIf(a=15,15,13)
  4. MsgBox a
  5. End Function
复制代码
错误:缺少')'
  1. On Error Resume Next
  2. a=15
  3. IIf(a=15,15,13)
  4. MsgBox a
复制代码
错误:调用过程时不能使用括号
  1. On Error Resume Next
  2. a=15
  3. Set b=IIf (a=15,"15","13")
  4. MsgBox b
复制代码
显示了空值

评分

参与人数 1PB +2 收起 理由
broly + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2011-7-10 15:41:37 | 显示全部楼层
IIF 函数
       Visual Script

          Function IIF(expression,true_value,false_value)
     IIF = false_value
      If expression Then IIF = true_value
         End Function

  Visual Basic语法格式为:

  IIf(expr, truepart, falsepart)

  IIf(表达式,真的部分,假的部分)

  作用:

  根据表达式的值,来返回两部分中的其中一个。

  IIf 函数的语法参数:

  expr 必要参数。用来判断真伪的表达式。

  truepart 必要参数。如果 expr 为 True,则返回这部分的值或表达式。

  falsepart 必要参数。如果 expr 为 False,则返回这部分的值或表达式。

  说明

  由于 IIf 会计算 truepart 和 falsepart,虽然它只返回其中的一个。因此要注意到这个副作用。例如,如果 falsepart 产生一个被零除错误,那么程序就会发生错误,即使 expr 为 True。
发表于 2011-7-10 16:37:06 | 显示全部楼层
vbs中没有自己定义一个出来就的是了

  1. Dim Num
  2. Randomize
  3. Num = Int(Rnd * 20)
  4. MsgBox Num & "|" & IIF(Num > 10, "BatHome", "ArdendMan")

  5. Function IIF(Exp, isTrue, isFalse)
  6.   IIF = isFalse
  7.   If Exp Then IIF = isTrue
  8. End Function
复制代码

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-7-10 18:29:57 | 显示全部楼层
Function IIf(a=15,15,13)
MsgBox a
End Function

楼主,你学了这么久的VBS,连函数怎么写都不知道吗?

VBS可以使用的函数列表:
《Windows 脚本技术》→VBScript→参考→函数 章节
直接用命令打开:hh script56.chm::/html/vtoriFunctions.htm

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-7-10 19:32:51 | 显示全部楼层
本帖最后由 broly 于 2011-7-10 19:34 编辑

我用自己的话给你解释VBS的函数。
首先看看VBS参考手册的定义:

  1. Function 语句
  2. 声明 Function 过程的名称、参数以及构成其主体的代码。

  3. [Public [Default]| Private] Function name [(
  4.   arglist
  5. )]
  6. [statements]
  7. [name = expression]
  8. [Exit Function]
  9. [statements]
  10. [name = expression]
  11. End Function
复制代码
Function前面的语句是可选的,这些关键字涉及的知识是“作用域”。由于VBS一般写在一个文件中,

所以这个可选语句对于初学者可以暂时不用理解。


看下面的例子:

  1. Dim expression,true_value,false_value,strReturn

  2. expression = 1 + 1
  3. true_value = "1+1=2"
  4. false_value = "1+1≠2"

  5. strReturn = IIf(expression,true_value,false_value)
  6. MsgBox strReturn

  7. Function IIf(expr, truepart, falsepart)
  8.   If(expr) Then
  9.     IIf = truepart
  10.   Else
  11.     IIf = falsepart
  12.   End If
  13. End Function
复制代码
函数IIF:
  1. Function IIf(expr, truepart, falsepart)
  2.   If(expr) Then
  3.     IIf = truepart
  4.   Else
  5.     IIf = falsepart
  6.   End If
  7. End Function
复制代码
函数的名称其实相当于一个函数内已经被定义的变量,即隐含了 "Dim IIf"
而这个变量的值就是这个函数的返回值,你给这个变量复制什么,返回值就是什么。

至于函数的调用,直接写函数名称和参数就可以了,不用 set 。里面是写变量或者值,不要“a=5”这

样写
  1. Set 语句
  2. 将对象引用赋给一个variable或property,或者将对象引用与事件关联。
复制代码

评分

参与人数 1技术 +1 收起 理由
Hello123World + 1 乐于助人

查看全部评分

发表于 2011-7-10 19:37:59 | 显示全部楼层
根据你的意思,应该这样写:
  1. Dim expression,true_value,false_value,strReturn

  2. expression = 2
  3. true_value = "1+1=2"
  4. false_value = "1+1≠2"

  5. strReturn = IIf("expression = 2",true_value,false_value)
  6. MsgBox strReturn

  7. Function IIf(expr, truepart, falsepart)
  8.   If( Eval(expr) ) Then
  9.     IIf = truepart
  10.   Else
  11.     IIf = falsepart
  12.   End If
  13. End Function
复制代码
 楼主| 发表于 2011-7-10 22:56:25 | 显示全部楼层
由于我是参考vb的基础教程,所以在一些细节上会和vbs有些出入。
本意是用iif缩减代码量,vbs中没有IIf,还要自定义,那还不如直接用if then else 呢。
 楼主| 发表于 2011-7-10 23:21:50 | 显示全部楼层
本帖最后由 Hello123World 于 2011-7-10 23:23 编辑

4# powerbat
你说的《Windows 脚本技术》是虚指脚本技术,
还是实指什么东西:
网站(http://www.microsoft.com/china/t ... center/default.mspx)?
还是书?
hh script56.chm::/html/vtoriFunctions.htm
提示找不到文件
发表于 2011-7-10 23:23:37 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 18:22 , Processed in 0.017554 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表