该章我们将讲解vbs的基础知识,主要内容如下:
一、变量
- Option Explicit
- Dim num_a
- num_a = "Hello " & vbNewLine & "world!"
- MsgBox "Hello World!", 65, "MsgBox Example"
- MsgBox num_a & vbCr & "num_a 类型为:" & TypeName(num_a) & vbLf &_
- "num_a 类型的符号数:" & VarType(num_a)
备注
1、Option Explicit :表示之后的变量必须显示声明,否则程序将报错
2、变量的定义与声明必须分开说明
3、vbcr:回车符; vblf:换行符 ; vbcrlf:回车与换行符 ; vbNewLine:新行字符
4、_:表示分行的数据为同一行数据 <单行拆分>
5、:表示通过“:”可将多行的数据写在一行上<多行合并>
二、常数
- Const Con_NUM_1="China"
- MsgBox "常数值为:" & Con_NUM_1
备注
1、常数在声明和赋值必须一步完成
2、常数在程序运行期间,不能被重新赋值,否则,报错
三、数组
1、固定长度数组
- Dim arr_a(2)
- arr_a(0)=0
- arr_a(1)="a"
- arr_a(2)="2"
- MsgBox "数组 arr_a的最大下标为:" & UBound(arr_a)
- MsgBox "数组 arr_a的数组元素分别为:"
- For i=0 To UBound(arr_a)
- MsgBox "第" & i & "个元素为:" & arr_a(i)
- Next
2、动态数组
- Dim arr_b()
- Dim j
- ReDim arr_b(0)
- arr_b(0)=0
- ReDim Preserve arr_b(1)
- arr_b(1)=1
- For j=0 To UBound(arr_b)
- MsgBox "第" & j & "个元素为:" & arr_b(j)
- Next
备注
1、要定义动态数组,首次定义时,数组长度不指定
2、Preserve:表示重新调整数组长度时,保留数组之前的内容,同时数组长度的调整次数无限制
四、运算符
- MsgBox "幂 2^4=" & 2^4
- MsgBox "除 5.1/4=" & 5.1/4
- MsgBox "整除 2\4=" & 2\4
- MsgBox "求余 (5)mod(3)=" & (5)mod(3)
- MsgBox "不等于 3<>2: " & (3<>2)
- MsgBox "逻辑与 0 and 2: " & (0 and 2)
- MsgBox "逻辑或 0 or 2: " & (0 or 2)
- MsgBox "逻辑非 not 2: " & (Not 2)
- MsgBox "逻辑异或 1 xor 1: " & (1 Xor 1)
- MsgBox "逻辑等价 1 eqv 2: " & (1 eqv 2)
- MsgBox "逻辑隐含 1 imp 2: " & (1 imp 2)
五、控制结构
1、 if..then..else
- Dim num_c,num_d,MyVar
- num_c = 3
- num_d = 2
- If num_c > num_d Then
- yVar = MsgBox("pass",65,"result")
- Else
- MyVar = MsgBox("fail",65,"result")
- End If
2、 select..case
- Dim num_e
- num_e = 7
- Select Case num_e
- Case 1
- MsgBox "1"
- Case 3
- MsgBox "3"
- Case Else
- MsgBox "default"
- End Select
3、 do..loop
- Dim num_f
- num_f = 10
- Do While num_f > 8
- num_f = num_f -1
- MsgBox num_f
- Loop
- Do
- num_f = num_f -1
- MsgBox num_f
- Loop While num_f > 3
4、 while..wend
- Dim num_g
- num_g = 4
- While num_g > 1
- MsgBox num_g
- num_g = num_g - 1
- Wend
5、 for..next
- Dim num_h
- For num_h=0 To 3
- MsgBox num_h
- Next
6、 退出循环或过程的方法
- 'Exit Do
- 'Exit For
- 'Exit Function
- 'Exit Property
- 'Exit Sub
VBS错误处理机制
如果在运行时发现一个错误,脚本会自动停止运行,可以在脚本开头添加
On Error Resume Next
表示,发送错误语句时,跳过,并接着执行下面的语句,,该语句把相关错误信息压入错误堆栈中。
VBS提供了一个err对象,它有两个方法clear,raise,五个属性:description,helpcontext,helpfile,number,source,err对象不用引用实例,可以直接使用,例如:
On Error Resume Next a=5 b=0 c=a/b if err.number <> 0 Then WScript.echo err.number&"/"err.description&"/"err.source end if
六、过程和函数
1、函数
- Function fun(a,b)
- fun = a+b
- End Function
- MsgBox fun(1,3)
2、过程
- Sub su(a,b)
- MsgBox a+b
- End Sub
- su 1,2
3、备注
function,sub均可带参数,同时function可有返回值,sub不能带返回值
七、常用函数
1、转换函数
- 'asc:返回与字符串的第一个字母对应的 ANSI 字符代码
- MsgBox Asc("ABC") '65
- 'chr:返回与指定的 ANSI 字符代码相对应的字符
- MsgBox Chr(65) 'A
- 'strComp:返回字符串比较的结果,-1:小于 0:等于 1:大于
- MsgBox StrComp("a","b")
- 'StrReverse:返回字符串,此字符串与指定字符串顺序相反
- MsgBox StrReverse("ABCDE")
- 'cstr:将指定表达式转换为字符串
- MsgBox TypeName(CStr(111))
- 'cint:将指定的表达式转换为数字
- MsgBox TypeName(CInt("123"))
2、判断函数
- 'isarray:返回指定变量是否为数组
- Dim arr_1(3)
- MsgBox IsArray(arr_1)
- 'isdate:返回指定变量是否为日期内容
- MsgBox IsDate("2011-7-7")
- 'isempty:返回 Boolean 值,指明变量是否已初始化,未初始化返回True,初始化返回False
- Dim bool
- MsgBox IsEmpty(bool) 'True 未初始化
- bool=1
- MsgBox IsEmpty(bool) 'false 已初始化
- bool=Null
- MsgBox IsEmpty(bool) 'false 已初始化
- bool=Empty
- MsgBox IsEmpty(bool) 'true 未初始化
- 'IsNumeric:返回boolean值,指明变量是否为数字
- MsgBox IsNumeric(3)
- 'isnull:指明表达式是否不包含任何有效数据,含有返回True,未含有返回False
- Dim isn
- MsgBox IsNull(isn)
- 'isobject:返回指定变量是否是对象,是对象返回True,不是对象返回False
- Dim obj
- Set obj = CreateObject("Wscript.shell")
- MsgBox IsObject(obj)
3、时间函数
- '根据计算机系统设定的日期和时间返回当前的日期和时间值
- MsgBox Now()
- '返回当前年月日,还有year(),month(),day()
- MsgBox Date()
- '返回当前时分秒,还有hour(),minute(),second()
- MsgBox Time()
- '返回星期数,日-六 分别为1-7
- Dim mydate
- mydate = #2011-7-7#
- MsgBox Weekday(mydate) '返回5,代表星期四
- '返回系统日期与指定日期相减后的日期
- MsgBox DateAdd("yyyy",1,Date()) '返回系统日期一年后的日期
- '备注:yyyy--代表年 q--代表季度 m d--代表月 日
- 'y--代表一年的日数 w--代表一周的日数 h n s --代表时分秒
- '返回两个日期的间隔日期
- MsgBox DateDiff("m","2011-7-1","2012-9-3") '返回14,代表相差14个月
4、其他函数
- '将指定字符串转换为大小写
- MsgBox UCase("AaA")
- MsgBox LCase("AaA")
- '返回字符串的长度
- MsgBox "china长度为:" & Len("china")
- '截取字符串
- MsgBox "china 前3个字符为:" & Left("china",3)
- MsgBox "china 后3个字符为:" & Right("china",3)
- MsgBox "china 从第2个字符开始,后3个字符为:" & mid("china",2,3)
- '返回某字符串在另一字符串中第一次出现的位置
- MsgBox "n在china的第" & InStr(2,"china","n",1) & "个位置"
- '备注: 2--表示从第2个字符开始搜索,1--表示文本比较
八、类
- '定义类
- Class Stu
- '定义带参数的函数,并有返回值
- Function output_fun(fir,sec)
- output_fun = fir & sec
- End Function
- '定义带参数的过程
- Sub output_sub(fir)
- Const con = "Mary,"
- MsgBox con & fir
- End Sub
- End Class
- '实例化变量
- Set s = New Stu
- '调用类中的函数,并给出实参
- MsgBox s.output_fun("Hello"," world") => Hello world
- MsgBox s.output_fun(1,2) => 12
- '调用类中的过程,并给出实参
- s.output_sub("How are you?") => Mary,How are you?
九、综合应用
- '例1:将数组中的元素由小到大进行排序
- Function sort()
- Dim arr_sort,i,j
- arr_sort = Array(1,3,5,7,9,2,4,6,8,10,-1,100)
- For i=0 To UBound(arr_sort)-1
- For j=0 To UBound(arr_sort)-1-i
- temp=0
- If arr_sort(j) > arr_sort(j+1) Then
- temp = arr_sort(j)
- arr_sort(j) = arr_sort(j+1)
- arr_sort(j+1) = temp
- End if
- next
- next
- For i=0 To ubound(arr_sort)
- MsgBox arr_sort(i)
- Next
- End Function
- sort()
- '例2:双色球摇奖机
- Function DoubleColourBall
- Dim red_ball(6)
- Dim red_ball_temp(6)
- Dim array_split
- Dim input_value
- input_value = InputBox ("请选择,是否显示摇奖过程: " & vbcr & vbcr & "Y or N (不区分大小写)","用户输入框","N")
- Randomize
- '摇红色球,并去除重复号码
- For i=0 To 5
- Randomize
- Do
- Randomize
- red_ball_temp(i) = Int(32 * Rnd + 1)
- If i>=1 Then
- array_split = array_split & " " & red_ball_temp(i-1) & " "
- End If
- if CBool(InStr(1,array_split,CStr(red_ball_temp(i)))) = False then
- red_ball(i) = red_ball_temp(i)
- Exit Do
- end if
- Loop
- If UCase(input_value) = "Y" Then
- MsgBox " *红色球*" & vbcr & vbcr & "第" & i+1 & "个中奖号码为:" & red_ball(i),1,"开奖号码"
- End If
- Next
- '摇蓝色球
- Randomize
- Dim blue_ball
- blue_ball = Int(12 * Rnd + 1)
- If UCase(input_value) = "Y" Then
- MsgBox " *蓝色球*" & vbCr & vbCr & "中奖号码为:" & blue_ball ,1,"开奖号码"
- End If
- '对号码进行排序
- For i=0 To 4
- For j=0 To 4-i
- Dim temp
- If red_ball(j) > red_ball(j+1) Then
- temp = red_ball(j)
- red_ball(j) = red_ball(j+1)
- red_ball(j+1) = temp
- End if
- next
- Next
- '显示最后结果
- Dim award_number
- award_number = Join(red_ball)
- MsgBox " 本期双色球中奖号码" & vbCr & vbCr & "红色球: " & award_number & vbcr & "蓝色球: " & blue_ball ,1,"开奖结果"
- End Function
- Call DoubleColourBall()
显示结果:
- '例3:将文件中的指定位置的#号以特定字符替换
- Function write_txt(txt_path)
- Const ForReading =1,ForWriting = 2,ForAppand = 8
- Dim fso,file
- Set fso = CreateObject("Scripting.fileSystemObject")
- Set file = fso.OpenTextFile(txt_path,ForWriting,True)
- '写入366个#
- For i=0 To 365
- file.Write("#")
- next
- Set file = Nothing
- Dim input_date,str,input_month,input_day,mouth_day,total_day
- input_date = InputBox("请输入日期,格式为月日,中间以空格隔开")
- split_date = Split(input_date," ",-1,1)
- input_month = CInt(split_date(0)) '输入的月份
- input_day = CInt(split_date(1)) '输入的日数
- '判断输入的日期是否正确
- If input_month < 1 Or input_month >12 Then
- MsgBox "月份错误,退出!"
- Exit function
- End If
- Select Case input_month
- Case 1,3,5,7,8,10,12
- max_day=31
- Case 4,6,9,11
- max_day=30
- Case Else
- max_day=28
- End Select
- If input_day < 1 or input_day > max_day Then
- MsgBox "日数错误,退出!"
- Exit function
- End if
- str = InputBox("请输入找到对应的日期后,用以替换#号的符号")
- mouth_day = Array(31,28,31,30,31,30,31,31,30,31,30,31) '每月的最大天数,不考虑闰年
- '计算天数
- total_day = 0
- If input_month>1 then
- For i=0 To input_month-2
- total_day = total_day + mouth_day(i)
- Next
- total_day = total_day + input_day
- Else
- total_day = input_day
- End If
- 'MsgBox "输入的天数在第" & total_day & "个位置"
- '将对应位置的#号,用输入的字符将其替换
- If fso.FileExists(txt_path) Then
- Set file = fso.OpenTextFile(txt_path,ForReading)
- Do While (Not file.AtEndOfLine)
- msg = file.ReadLine
- Loop
- Else
- MsgBox txt_path & " is't exists!"
- End If
- split_after_str = Replace(msg,"#",str,total_day,1)
- Set file = Nothing
- '将修改的后字符,重写入文件
- fso.DeleteFile(txt_path)
- fso.CreateTextFile(txt_path)
- Set file = fso.OpenTextFile(txt_path,ForAppand,True)
- For i=0 To total_day-2
- file.Write("#")
- Next
- file.Write(split_after_str)
- Set file = nothing
- Set fso = Nothing
- End function
- Call write_txt("c:\aaa.txt")
- 参考:http://blog.csdn.net/xibuzhihun/article/details/6801990
class test
private Sub Class_Initialize '初始化
dim t
...........
end sub
private Sub Class_Terminate '退出类
set t = nothing
end sub
相关推荐
VBS基础知识是学习Windows批处理、网页交互以及自动化脚本编写的重要一环。以下是对VBS核心概念、语法结构、常用函数及应用领域的详细介绍。 1. **VBS基础语法** - **变量声明**:VBS中的变量无需提前声明,可以...
### VBS基础知识教程详解 #### 一、VBS (VBScript) 概述 VBS (Visual Basic Script Edition) 是一种轻量级的脚本语言,由微软开发,基于Visual Basic编程语言。作为一种脚本语言,VBS的主要特点是无需编译即可直接...
### QTP初级2_VBS基础知识 #### 一、VBS简介与特点 VBS(Visual Basic Scripting Edition),即Visual Basic 脚本版,是一种轻量级的编程语言,适用于自动化测试工具如QTP(现称为UFT,Unified Functional Testing...
以上只是VBS基础知识的一部分,实际使用中还可以结合WMI(Windows Management Instrumentation)进行系统管理,或者使用ADODB对象访问数据库。VBS的灵活性和广泛的应用场景使其成为Windows环境下不可或缺的脚本语言...
一、VBS基础知识 1. 变量:VBS支持多种数据类型,如String(字符串)、Integer(整型)、Double(双精度浮点型)等。变量声明可以使用Dim、Private、Public等关键字,无需预先定义类型,VBS会自动推断。 2. 控制...
1. **VBS基础知识**: - **变量**:在VBS中,变量不需要声明类型,直接使用Dim关键字即可创建,如`Dim myVar`。 - **数据类型**:包括String(字符串)、Integer(整数)、Double(双精度浮点数)、Boolean(布尔...
### VBS基础知识 #### 脚本入门:Hello World VBS脚本的编写可以非常简单,一个经典的入门示例就是“Hello World”程序。只需在任何文本编辑器中输入以下代码: ```vbs MsgBox "Hello World!" ``` 保存为`.vbs`文件...
以上只是VBS基础知识的冰山一角,实际应用中还包括错误处理、数组、类等高级概念。通过不断学习和实践,你可以掌握VBS并利用它实现丰富的自动化任务。例如,`Vbs_基础知识.vbs`这个文件可能就包含了一些基础的VBS...
1. **VBS基础知识** - **语法结构**:VBS的语法简洁明了,包括变量声明、数据类型、运算符、流程控制语句(如If...Then、For...Next、Do...Loop等)。 - **对象模型**:VBS广泛利用Windows的COM(Component Object...
1. **了解VBS基础知识**:掌握基本的VBS语法可以帮助识别潜在的危险脚本。 2. **谨慎运行未知脚本**:不要轻易运行来自不可信来源的脚本文件,尤其是那些声称能够引发蓝屏或其他异常行为的脚本。 3. **备份重要数据*...
1. **VBS基础知识**: VBS是一种解释型的、弱类型的脚本语言,它简化了Visual Basic的语法,使其更适合非专业程序员使用。VBS的主要应用领域包括ActiveX脚本、Windows脚本宿主(WSH)和ASP(Active Server Pages)...
在“vbs教程(vbscript,含多个文件)”这个资源中,包含了丰富的学习材料,对于初学者来说是掌握VBS基础知识的理想选择。 首先,我们来看“vbs的一些资料(DOC格式的).doc”。这份文档很可能包含了VBS的关键概念,如...
1. **VBS基础知识**:了解变量声明、数据类型、控制流语句和函数。 2. **对象模型**:学习如何使用WScript.Shell和Timer对象。 3. **事件驱动编程**:可能涉及定时器的Interval属性和Timeout事件。 4. **字符串处理*...
- **在线教程**:初学者可以通过在线平台如W3Schools、Microsoft Docs等学习VBS基础知识。 - **书籍**:如《Visual Basic Script编程指南》等书籍可以帮助深入理解VBS。 - **实践**:通过编写简单的脚本并运行,...
VBScript(Visual Basic Script)...掌握VBScript的基础知识,将有助于你编写出功能强大的批处理脚本、动态网页,甚至在更复杂的应用场景中发挥作用。通过不断实践和查阅文档,你将能够熟练运用VBScript解决实际问题。
1. **VBS基础知识**:VBS是基于事件驱动的,它提供了大量的内建对象,如WScript、FileSystemObject、Scripting.Dictionary等,用于处理系统任务和数据操作。它的语法简洁,易于学习,适合编写小型脚本和自动化任务。...
一、VBS基础知识 1. 变量:VBS中的变量无需预声明,可直接使用。有几种不同的变量类型,如Variant(默认类型,可以存储任何数据类型)、String(字符串)、Integer(整型)、Double(双精度浮点型)等。 2. 数据...
### VBS基础知识 #### 1. **创建对象** - 在VBS中,`CreateObject`方法用于创建COM对象实例。 - 示例:`Set obj = CreateObject("SAPI.SpVoice")`,此处创建了一个语音合成对象,可以用来朗读文本。 - 使用场景...
根据提供的文件信息,我们可以整理出关于VBS(Visual Basic Script Edition)的基础知识点,涉及VBS的概念、使用场景、基本语法等内容。 ### VBS是什么? VBS全称是Visual Basic Script Edition,是由微软开发的一...
#### 二、VBS基础知识 1. **Hello World程序** - 示例代码:`MsgBox "Hello World!"` - 解析: - `MsgBox` 函数用于显示消息框。 - `"Hello World!"` 是字符串常量,表示消息框中显示的文字。 - 运行方法: -...