news 2026/4/16 12:12:55

VBScript 函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VBScript 函数

VBScript 函数详解

VBScript 支持两种可重复使用的代码块:Function(函数)Sub(子程序)
两者区别在于:Function 可以返回值Sub 不能返回值

1. Function(函数)语法

用于计算并返回一个值。

基本语法

Function 函数名(参数1, 参数2, ..., 参数n) ' 代码块 函数名 = 返回值 ' 关键:通过函数名赋值来返回值 End Function

或者使用显式 Return(VBScript 不支持 return 关键字,但可以用函数名赋值)

示例1:简单加法函数

Option Explicit Function Add(a, b) Add = a + b ' 返回值赋给函数名 End Function Dim result result = Add(15, 25) MsgBox "15 + 25 = " & result ' 输出 40

示例2:判断奇偶数

Function IsEven(num) If num Mod 2 = 0 Then IsEven = True Else IsEven = False End If End Function Dim number number = CInt(InputBox("请输入一个数字:")) If IsEven(number) Then MsgBox number & " 是偶数" Else MsgBox number & " 是奇数" End If

示例3:返回字符串(大小写转换)

Function ReverseCase(str) Dim i, char, result result = "" For i = 1 To Len(str) char = Mid(str, i, 1) If char = LCase(char) Then result = result & UCase(char) Else result = result & LCase(char) End If Next ReverseCase = result End Function MsgBox ReverseCase("Hello VBScript") ' 输出 hELLO vbsCRIPT

示例4:多参数、可选参数(VBScript 不支持真正可选参数,但可用 Empty 判断)

Function Greet(name, greeting) If IsEmpty(greeting) Then greeting = "你好" Greet = greeting & "," & name & "!" End Function MsgBox Greet("张三") ' 输出 你好,张三! MsgBox Greet("李四", "Good morning") ' 输出 Good morning,李四!
2. Sub(子程序)语法

用于执行操作,但不返回值。

语法

Sub 过程名(参数1, 参数2, ...) ' 代码块 End Sub

调用方式

  • Call 子程序名(参数)(带 Call 可省略括号)
  • 直接子程序名 参数

示例1:弹出问候

Sub SayHello(name) MsgBox "Hello, " & name & "!今天是 " & Date() End Sub Call SayHello("王五") ' 或 SayHello "赵六"

示例2:批量删除文件(实用)

Sub DeleteFilesInFolder(folderPath) Dim fso, folder, file Set fso = CreateObject("Scripting.FileSystemObject") If fso.FolderExists(folderPath) Then Set folder = fso.GetFolder(folderPath) For Each file In folder.Files On Error Resume Next file.Delete True If Err.Number <> 0 Then MsgBox "删除失败:" & file.Name Err.Clear End If Next MsgBox "文件夹 " & folderPath & " 中的文件已清理!" Else MsgBox "文件夹不存在!" End If End Sub Call DeleteFilesInFolder("C:\Temp")
3. 参数传递方式(重要!)

VBScript 默认按引用传递(ByRef),即修改形参会影响实参。
想按值传递需显式用ByVal

Sub Increment(ByRef num) num = num + 1 End Sub Sub IncrementSafe(ByVal num) num = num + 1 ' 只修改副本,不影响原变量 End Sub Dim x x = 10 Call Increment(x) MsgBox x ' 输出 11(被修改了) x = 10 Call IncrementSafe(x) MsgBox x ' 输出 10(未被修改)
4. 递归函数(函数调用自己)

VBScript 支持递归,常用于计算阶乘、斐波那契等。

示例:计算阶乘

Function Factorial(n) If n <= 1 Then Factorial = 1 Else Factorial = n * Factorial(n - 1) End If End Function MsgBox "5! = " & Factorial(5) ' 输出 120

注意:递归层数太多可能导致栈溢出(一般几千层以内安全)。

5. 函数与 Sub 的结合使用(完整实用实例)

计算圆面积并显示结果。

Option Explicit Const PI = 3.1415926 Function CircleArea(radius) CircleArea = PI * radius * radius End Function Sub ShowCircleInfo(radius) Dim area area = CircleArea(radius) MsgBox "半径:" & radius & vbCrLf & _ "面积:" & FormatNumber(area, 2) & vbCrLf & _ "周长:" & FormatNumber(2 * PI * radius, 2) End Sub Dim r r = CDbl(InputBox("请输入圆的半径:")) If r > 0 Then Call ShowCircleInfo(r) Else MsgBox "半径必须大于0!" End If
小结
  • 用 Function:需要返回值(如计算、判断、转换)
  • 用 Sub:只执行操作(如显示消息、删除文件、修改设置)
  • 永远加Option Explicit
  • 注意参数传递方式(ByRef vs ByVal)
  • 函数名就是返回值变量
  • 可以嵌套、递归、互相调用

如果你有具体需求(如字符串处理函数、文件操作封装、数学计算函数等),告诉我,我可以为你写出完整可复用的函数代码!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:01:29

终极指南:快速掌握 awesome-shadcn/ui 精选组件库

终极指南&#xff1a;快速掌握 awesome-shadcn/ui 精选组件库 【免费下载链接】awesome-shadcn-ui A curated list of awesome things related to shadcn/ui. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-shadcn-ui 在当今快速发展的前端开发领域&#xff0c;…

作者头像 李华
网站建设 2026/4/16 9:02:20

Edge TTS终极指南:5分钟掌握专业级语音合成技术

Edge TTS终极指南&#xff1a;5分钟掌握专业级语音合成技术 【免费下载链接】edge-tts Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key 项目地址: https://gitcode.com/GitHub_Trending/ed/edge-t…

作者头像 李华
网站建设 2026/4/16 9:01:47

Python-Chess象棋编程实战:从零构建专业级象棋应用

Python-Chess是一个功能强大的国际象棋编程库&#xff0c;它为开发者提供了完整的象棋解决方案。无论你是想要开发象棋游戏、构建AI对战系统&#xff0c;还是进行棋谱分析&#xff0c;这个库都能让你事半功倍。接下来&#xff0c;让我们一步步掌握这个强大的工具。 【免费下载链…

作者头像 李华
网站建设 2026/4/16 6:31:00

7、XSLT 变量与参数的深入解析

XSLT 变量与参数的深入解析 在 XSLT 编程中,变量和参数扮演着至关重要的角色。它们不仅能让代码更易读、可维护,还能显著提升处理效率。下面我们将详细探讨 XSLT 中变量和参数的定义、使用方法以及相关注意事项。 1. 变量的定义与使用 在 XSLT 里,变量可通过 <xsl:va…

作者头像 李华
网站建设 2026/4/16 9:06:55

9、XSLT 结果树生成与输出控制全解析

XSLT 结果树生成与输出控制全解析 1. 结果树概述 在 XSLT 转换过程中,除了源树外,还会涉及到结果树。结果树与源树类似,包含元素、属性、注释、处理指令、文本节点和命名空间节点等。样式表的主要任务是根据源树的信息构建结果树,最终生成至少一个结果文档作为转换的输出…

作者头像 李华
网站建设 2026/4/16 9:08:35

Gpredict卫星追踪软件使用指南:从零开始掌握卫星观测技能

Gpredict卫星追踪软件使用指南&#xff1a;从零开始掌握卫星观测技能 【免费下载链接】gpredict Gpredict satellite tracking application 项目地址: https://gitcode.com/gh_mirrors/gp/gpredict 想要追踪国际空间站、气象卫星或是业余无线电卫星吗&#xff1f;Gpredi…

作者头像 李华