标题: [问题求助] [已解决]VBS中可以使用VB的IIF 函数吗,怎么使用? [打印本页]
作者: Hello123World 时间: 2011-7-10 15:39 标题: [已解决]VBS中可以使用VB的IIF 函数吗,怎么使用?
本帖最后由 pcl_test 于 2016-8-12 22:04 编辑
VBS中可以使用iif吗,怎么使用?
其实的目的是为了获取iif的返回值。- On Error Resume Next
- a=15
- Function IIf(a=15,15,13)
- MsgBox a
- End Function
复制代码
错误:缺少')'- On Error Resume Next
- a=15
- IIf(a=15,15,13)
- MsgBox a
复制代码
错误:调用过程时不能使用括号- On Error Resume Next
- a=15
- Set b=IIf (a=15,"15","13")
- MsgBox b
复制代码
显示了空值
作者: Hello123World 时间: 2011-7-10 15:41
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。
作者: ArdentMan 时间: 2011-7-10 16:37
vbs中没有自己定义一个出来就的是了- Dim Num
- Randomize
- Num = Int(Rnd * 20)
- MsgBox Num & "|" & IIF(Num > 10, "BatHome", "ArdendMan")
-
- Function IIF(Exp, isTrue, isFalse)
- IIF = isFalse
- If Exp Then IIF = isTrue
- End Function
复制代码
作者: powerbat 时间: 2011-7-10 18:29
Function IIf(a=15,15,13)
MsgBox a
End Function
楼主,你学了这么久的VBS,连函数怎么写都不知道吗?
VBS可以使用的函数列表:
《Windows 脚本技术》→VBScript→参考→函数 章节
直接用命令打开:hh script56.chm::/html/vtoriFunctions.htm
作者: broly 时间: 2011-7-10 19:32
本帖最后由 broly 于 2011-7-10 19:34 编辑
我用自己的话给你解释VBS的函数。
首先看看VBS参考手册的定义:- Function 语句
- 声明 Function 过程的名称、参数以及构成其主体的代码。
-
- [Public [Default]| Private] Function name [(
- arglist
- )]
- [statements]
- [name = expression]
- [Exit Function]
- [statements]
- [name = expression]
- End Function
复制代码
Function前面的语句是可选的,这些关键字涉及的知识是“作用域”。由于VBS一般写在一个文件中,
所以这个可选语句对于初学者可以暂时不用理解。
看下面的例子:- Dim expression,true_value,false_value,strReturn
-
- expression = 1 + 1
- true_value = "1+1=2"
- false_value = "1+1≠2"
-
- strReturn = IIf(expression,true_value,false_value)
- MsgBox strReturn
-
- Function IIf(expr, truepart, falsepart)
- If(expr) Then
- IIf = truepart
- Else
- IIf = falsepart
- End If
- End Function
复制代码
函数IIF:- Function IIf(expr, truepart, falsepart)
- If(expr) Then
- IIf = truepart
- Else
- IIf = falsepart
- End If
- End Function
复制代码
函数的名称其实相当于一个函数内已经被定义的变量,即隐含了 "Dim IIf"
而这个变量的值就是这个函数的返回值,你给这个变量复制什么,返回值就是什么。
至于函数的调用,直接写函数名称和参数就可以了,不用 set 。里面是写变量或者值,不要“a=5”这
样写- Set 语句
- 将对象引用赋给一个variable或property,或者将对象引用与事件关联。
复制代码
作者: broly 时间: 2011-7-10 19:37
根据你的意思,应该这样写:- Dim expression,true_value,false_value,strReturn
-
- expression = 2
- true_value = "1+1=2"
- false_value = "1+1≠2"
-
- strReturn = IIf("expression = 2",true_value,false_value)
- MsgBox strReturn
-
- Function IIf(expr, truepart, falsepart)
- If( Eval(expr) ) Then
- IIf = truepart
- Else
- IIf = falsepart
- End If
- End Function
复制代码
作者: Hello123World 时间: 2011-7-10 22:56
由于我是参考vb的基础教程,所以在一些细节上会和vbs有些出入。
本意是用iif缩减代码量,vbs中没有IIf,还要自定义,那还不如直接用if then else 呢。
作者: Hello123World 时间: 2011-7-10 23:21
本帖最后由 Hello123World 于 2011-7-10 23:23 编辑
4# powerbat
你说的《Windows 脚本技术》是虚指脚本技术,
还是实指什么东西:
网站(http://www.microsoft.com/china/t ... center/default.mspx)?
还是书?
hh script56.chm::/html/vtoriFunctions.htm
提示找不到文件
作者: broly 时间: 2011-7-10 23:23
8# Hello123World
在这里可以下载
http://www.bathome.net/viewthread.php?tid=1985&page=1&fromuid=25503#pid11240
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |