`

VBS基础知识

    博客分类:
  • VBS
 
阅读更多

  该章我们将讲解vbs的基础知识,主要内容如下:

一、变量

[html] view plaincopy
 
  1. Option Explicit   
  2. Dim num_a  
  3. num_a = "Hello " & vbNewLine & "world!"   
  4. MsgBox "Hello World!", 65, "MsgBox Example"   
  5. MsgBox num_a & vbCr & "num_a 类型为:" & TypeName(num_a) & vbLf &_  
  6.        "num_a 类型的符号数:" & VarType(num_a)  


           备注
            1、Option Explicit :表示之后的变量必须显示声明,否则程序将报错
            2、变量的定义与声明必须分开说明
            3、vbcr:回车符; vblf:换行符 ; vbcrlf:回车与换行符 ; vbNewLine:新行字符
            4、_:表示分行的数据为同一行数据 <单行拆分>

            5、:表示通过“:”可将多行的数据写在一行上<多行合并>
 
二、常数

[html] view plaincopy
 
  1. Const Con_NUM_1="China"  
  2. MsgBox "常数值为:" & Con_NUM_1  

        

        备注
        1、常数在声明和赋值必须一步完成
        2、常数在程序运行期间,不能被重新赋值,否则,报错
 
三、数组
    1、固定长度数组

[html] view plaincopy
 
  1. Dim arr_a(2)  
  2. arr_a(0)=0  
  3. arr_a(1)="a"  
  4. arr_a(2)="2"  
  5. MsgBox "数组 arr_a的最大下标为:" & UBound(arr_a)  
  6. MsgBox "数组 arr_a的数组元素分别为:"  
  7.   
  8.   
  9. For i=0 To UBound(arr_a)  
  10.       MsgBox "第" & i & "个元素为:" & arr_a(i)  
  11. Next  


 
    
2、动态数组

[html] view plaincopy
 
  1. Dim arr_b()  
  2. Dim j  
  3.   
  4. ReDim arr_b(0)  
  5. arr_b(0)=0  
  6.   
  7. ReDim Preserve arr_b(1)  
  8. arr_b(1)=1  
  9.   
  10. For j=0 To UBound(arr_b)  
  11.      MsgBox "第" & j & "个元素为:" & arr_b(j)  
  12. Next  


        备注
        1、要定义动态数组,首次定义时,数组长度不指定
        2、Preserve:表示重新调整数组长度时,保留数组之前的内容,同时数组长度的调整次数无限制
    
四、运算符

[html] view plaincopy
 
  1. MsgBox "幂 2^4="   & 2^4  
  2. MsgBox "除 5.1/4="   & 5.1/4   
  3. MsgBox "整除 2\4=" & 2\4   
  4. MsgBox "求余 (5)mod(3)=" & (5)mod(3)   
  5. MsgBox "不等于 3<>2: " & (3<>2)  
  6. MsgBox "逻辑与 0 and 2: " & (0 and 2)   
  7. MsgBox "逻辑或 0 or 2: " & (0 or 2)   
  8. MsgBox "逻辑非 not 2: " & (Not 2)   
  9. MsgBox "逻辑异或 1 xor 1: " & (1 Xor 1)   
  10. MsgBox "逻辑等价 1 eqv 2: " & (1 eqv 2)   
  11. MsgBox "逻辑隐含 1 imp 2: " & (1 imp 2)   


 
五、控制结构
        1、 if..then..else
   

[html] view plaincopy
 
  1. Dim num_c,num_d,MyVar  
  2. num_c = 3  
  3. num_d = 2  
  4.   
  5. If num_c > num_d Then  
  6.      yVar = MsgBox("pass",65,"result")  
  7. Else  
  8.      MyVar = MsgBox("fail",65,"result")  
  9. End If  



 2、 select..case

[html] view plaincopy
 
  1. Dim num_e  
  2. num_e = 7  
  3. Select  Case num_e  
  4.    Case 1  
  5.       MsgBox "1"  
  6.    Case 3  
  7.       MsgBox "3"  
  8.   Case Else  
  9.       MsgBox "default"  
  10. End Select  


 
 3、 do..loop

[vb] view plaincopy
 
  1. Dim num_f  
  2. num_f = 10  
  3. Do While num_f > 8  
  4.     num_f = num_f -1  
  5.     MsgBox num_f  
  6. Loop  
[vb] view plaincopy
 
  1. Do   
  2.   num_f = num_f -1  
  3.   MsgBox num_f  
  4. Loop While num_f > 3  



 
 4、 while..wend

[vb] view plaincopy
 
  1. Dim num_g  
  2. num_g = 4  
  3. While num_g > 1  
  4.     MsgBox num_g  
  5.     num_g = num_g - 1  
  6. Wend  




 
5、 for..next

[html] view plaincopy
 
  1. Dim num_h  
  2. For num_h=0 To 3  
  3.   MsgBox num_h  
  4. Next  


   
 6、 退出循环或过程的方法

[html] view plaincopy
 
  1. 'Exit Do  
  2. 'Exit For  
  3. 'Exit Function  
  4. 'Exit Property  
  5. '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、函数

[html] view plaincopy
 
  1. Function fun(a,b)  
  2.     fun = a+b  
  3. End Function  
  4. MsgBox fun(1,3)  


    2、过程  

[html] view plaincopy
 
  1. Sub su(a,b)  
  2.          MsgBox a+b  
  3. End Sub  
  4. su 1,2  


    
 
   3、备注
           function,sub均可带参数,同时function可有返回值,sub不能带返回值
    
七、常用函数
    1、转换函数

[html] view plaincopy
 
  1. 'asc:返回与字符串的第一个字母对应的 ANSI 字符代码  
  2.  MsgBox Asc("ABC") '65  
  3.    
  4.  'chr:返回与指定的 ANSI 字符代码相对应的字符  
  5.  MsgBox Chr(65)  'A  
  6.    
  7.  'strComp:返回字符串比较的结果,-1:小于 0:等于 1:大于  
  8.  MsgBox StrComp("a","b")  
  9.    
  10.  'StrReverse:返回字符串,此字符串与指定字符串顺序相反  
  11.  MsgBox StrReverse("ABCDE")  
  12.    
  13.  'cstr:将指定表达式转换为字符串  
  14.  MsgBox TypeName(CStr(111))  
  15.   
  16.  'cint:将指定的表达式转换为数字  
  17.  MsgBox TypeName(CInt("123"))  


 
    
2、判断函数

[html] view plaincopy
 
  1. 'isarray:返回指定变量是否为数组  
  2.  Dim arr_1(3)  
  3.  MsgBox IsArray(arr_1)  
  4.    
  5.  'isdate:返回指定变量是否为日期内容  
  6.  MsgBox IsDate("2011-7-7")  
  7.    
  8.  'isempty:返回 Boolean 值,指明变量是否已初始化,未初始化返回True,初始化返回False  
  9.  Dim bool  
  10.  MsgBox IsEmpty(bool) 'True 未初始化  
  11.  bool=1  
  12.  MsgBox IsEmpty(bool) 'false 已初始化  
  13.    
  14.  bool=Null  
  15.  MsgBox IsEmpty(bool) 'false 已初始化  
  16.    
  17.  bool=Empty  
  18.  MsgBox IsEmpty(bool) 'true 未初始化  
  19.    
  20.  'IsNumeric:返回boolean值,指明变量是否为数字  
  21.  MsgBox IsNumeric(3)  
  22.    
  23.  'isnull:指明表达式是否不包含任何有效数据,含有返回True,未含有返回False  
  24.  Dim isn  
  25.  MsgBox IsNull(isn)  
  26.    
  27.  'isobject:返回指定变量是否是对象,是对象返回True,不是对象返回False  
  28.  Dim obj  
  29.  Set obj = CreateObject("Wscript.shell")  
  30.  MsgBox IsObject(obj)   


 
    
3、时间函数

[html] view plaincopy
 
  1. '根据计算机系统设定的日期和时间返回当前的日期和时间值  
  2.  MsgBox Now()  
  3.    
  4.  '返回当前年月日,还有year(),month(),day()  
  5.  MsgBox Date()  
  6.    
  7.  '返回当前时分秒,还有hour(),minute(),second()  
  8.  MsgBox Time()  
  9.    
  10.  '返回星期数,日-六 分别为1-7  
  11.  Dim mydate  
  12.  mydate = #2011-7-7#  
  13.  MsgBox Weekday(mydate) '返回5,代表星期四  
  14.    
  15.  '返回系统日期与指定日期相减后的日期  
  16.  MsgBox DateAdd("yyyy",1,Date())  '返回系统日期一年后的日期  
  17.   '备注:yyyy--代表年  q--代表季度  m d--代表月 日  
  18.   'y--代表一年的日数  w--代表一周的日数  h n s --代表时分秒  
  19.  '返回两个日期的间隔日期  
  20.  MsgBox DateDiff("m","2011-7-1","2012-9-3") '返回14,代表相差14个月  


 
    4、其他函数

[html] view plaincopy
 
  1. '将指定字符串转换为大小写  
  2.  MsgBox UCase("AaA")  
  3.  MsgBox LCase("AaA")   
  4.    
  5.  '返回字符串的长度  
  6.  MsgBox "china长度为:" & Len("china")  
  7.    
  8.  '截取字符串  
  9.  MsgBox "china 前3个字符为:" & Left("china",3)  
  10.  MsgBox "china 后3个字符为:" & Right("china",3)  
  11.  MsgBox "china 从第2个字符开始,后3个字符为:" & mid("china",2,3)  
  12.    
  13.  '返回某字符串在另一字符串中第一次出现的位置  
  14.  MsgBox "n在china的第" & InStr(2,"china","n",1) & "个位置"   
  15.  '备注: 2--表示从第2个字符开始搜索,1--表示文本比较  
  16.    


 
八、类

[html] view plaincopy
 
  1. '定义类  
  2.     Class Stu  
  3.           '定义带参数的函数,并有返回值  
  4.             Function output_fun(fir,sec)  
  5.               output_fun = fir & sec  
  6.           End Function  
  7.        
  8.          '定义带参数的过程  
  9.            Sub output_sub(fir)  
  10.              Const con = "Mary,"  
  11.              MsgBox con & fir  
  12.          End Sub  
  13.    End Class  
  14.   
  15.    '实例化变量  
  16.     Set s = New Stu  
  17.       
  18.    '调用类中的函数,并给出实参  
  19.     MsgBox s.output_fun("Hello"," world") => Hello world  
  20.     MsgBox s.output_fun(1,2)              => 12  
  21.       
  22.    '调用类中的过程,并给出实参  
  23.     s.output_sub("How are you?")          => Mary,How are you?  



 九、综合应用

[vb] view plaincopy
 
  1. '例1:将数组中的元素由小到大进行排序  
  2.  Function sort()   
  3.    Dim arr_sort,i,j  
  4.    arr_sort = Array(1,3,5,7,9,2,4,6,8,10,-1,100)  
  5.     
  6.    For i=0 To UBound(arr_sort)-1  
  7.        For j=0 To UBound(arr_sort)-1-i  
  8.            temp=0  
  9.            If arr_sort(j) > arr_sort(j+1) Then  
  10.                temp = arr_sort(j)  
  11.                arr_sort(j) = arr_sort(j+1)  
  12.                arr_sort(j+1) = temp  
  13.            End if  
  14.        next  
  15.    next  
  16.     
  17.   For i=0 To ubound(arr_sort)  
  18.       MsgBox arr_sort(i)  
  19.   Next  
  20. End Function   
  21. sort()  
           
[vb] view plaincopy
 
  1. '例2:双色球摇奖机  
  2. Function DoubleColourBall  
  3.     Dim  red_ball(6)            
  4.     Dim  red_ball_temp(6)  
  5.     Dim  array_split  
  6.     Dim  input_value  
  7.       
  8.     input_value = InputBox ("请选择,是否显示摇奖过程: " & vbcr & vbcr & "Y or N (不区分大小写)","用户输入框","N")  
  9.       
  10.     Randomize  
  11.     '摇红色球,并去除重复号码  
  12.     For i=0 To 5  
  13.         Randomize   
  14.         Do  
  15.             Randomize   
  16.             red_ball_temp(i) = Int(32 * Rnd + 1)  
  17.   
  18.             If i>=1 Then  
  19.                 array_split = array_split  & " " & red_ball_temp(i-1) & " "  
  20.             End If  
  21.   
  22.             if CBool(InStr(1,array_split,CStr(red_ball_temp(i)))) = False then  
  23.                 red_ball(i) = red_ball_temp(i)  
  24.                 Exit  Do   
  25.             end if  
  26.         Loop  
  27.           
  28.         If UCase(input_value) = "Y" Then  
  29.             MsgBox "    *红色球*" & vbcr & vbcr & "第" & i+1 & "个中奖号码为:" & red_ball(i),1,"开奖号码"  
  30.         End If  
  31.     Next  
  32.       
  33.     '摇蓝色球  
  34.     Randomize  
  35.     Dim blue_ball  
  36.     blue_ball = Int(12 * Rnd + 1)  
  37.       
  38.     If UCase(input_value) = "Y" Then  
  39.             MsgBox "  *蓝色球*" & vbCr & vbCr  & "中奖号码为:" & blue_ball ,1,"开奖号码"  
  40.     End If  
  41.       
  42.     '对号码进行排序  
  43.     For i=0 To 4  
  44.         For j=0 To 4-i  
  45.             Dim temp  
  46.             If red_ball(j) > red_ball(j+1) Then  
  47.                 temp = red_ball(j)  
  48.                 red_ball(j) = red_ball(j+1)  
  49.                 red_ball(j+1) = temp  
  50.             End if   
  51.         next  
  52.     Next  
  53.       
  54.     '显示最后结果  
  55.     Dim award_number  
  56.     award_number = Join(red_ball)  
  57.     MsgBox "   本期双色球中奖号码" & vbCr & vbCr & "红色球: " & award_number & vbcr & "蓝色球: " &  blue_ball ,1,"开奖结果"  
  58. End Function  
  59.   
  60. Call DoubleColourBall()  

 

显示结果:

 

 

[vb] view plaincopy
 
  1. '例3:将文件中的指定位置的#号以特定字符替换  
  2. Function write_txt(txt_path)    
  3.    Const ForReading =1,ForWriting = 2,ForAppand = 8    
  4.    Dim fso,file    
  5.    Set fso = CreateObject("Scripting.fileSystemObject")    
  6.    Set file = fso.OpenTextFile(txt_path,ForWriting,True)    
  7.      
  8.    '写入366个#    
  9.    For i=0 To 365  
  10.         file.Write("#")   
  11.    next  
  12.    Set file = Nothing  
  13.   
  14.    Dim input_date,str,input_month,input_day,mouth_day,total_day  
  15.    input_date = InputBox("请输入日期,格式为月日,中间以空格隔开")  
  16.      
  17.    split_date = Split(input_date," ",-1,1)                 
  18.    input_month = CInt(split_date(0))            '输入的月份  
  19.    input_day = CInt(split_date(1))              '输入的日数  
  20.      
  21.    '判断输入的日期是否正确  
  22.    If input_month < 1 Or  input_month >12 Then  
  23.         MsgBox "月份错误,退出!"  
  24.         Exit function  
  25.    End If  
  26.      
  27.    Select  Case input_month    
  28.     Case 1,3,5,7,8,10,12  
  29.         max_day=31   
  30.     Case 4,6,9,11    
  31.         max_day=30    
  32.     Case Else    
  33.         max_day=28  
  34.    End Select   
  35.       
  36.    If input_day < 1 or input_day > max_day Then  
  37.         MsgBox "日数错误,退出!"  
  38.         Exit function  
  39.    End if  
  40.      
  41.    str = InputBox("请输入找到对应的日期后,用以替换#号的符号")   
  42.    mouth_day = Array(31,28,31,30,31,30,31,31,30,31,30,31) '每月的最大天数,不考虑闰年  
  43.      
  44.    '计算天数  
  45.     total_day = 0  
  46.     If input_month>1 then  
  47.         For i=0 To input_month-2  
  48.             total_day = total_day + mouth_day(i)  
  49.         Next  
  50.         total_day = total_day + input_day  
  51.     Else  
  52.         total_day = input_day  
  53.     End If  
  54.       
  55.     'MsgBox "输入的天数在第" & total_day & "个位置"  
  56.   
  57.   
  58.     '将对应位置的#号,用输入的字符将其替换  
  59.     If fso.FileExists(txt_path) Then    
  60.         Set file = fso.OpenTextFile(txt_path,ForReading)    
  61.         Do While (Not file.AtEndOfLine)    
  62.            msg = file.ReadLine    
  63.         Loop    
  64.     Else    
  65.         MsgBox txt_path & " is't exists!"    
  66.     End If    
  67.       
  68.     split_after_str = Replace(msg,"#",str,total_day,1)  
  69.     Set file = Nothing  
  70.       
  71.     '将修改的后字符,重写入文件  
  72.     fso.DeleteFile(txt_path)  
  73.     fso.CreateTextFile(txt_path)  
  74.     Set file = fso.OpenTextFile(txt_path,ForAppand,True)    
  75.   
  76.     For i=0 To total_day-2  
  77.         file.Write("#")   
  78.     Next  
  79.     file.Write(split_after_str)  
  80.       
  81.     Set file = nothing   
  82.     Set fso = Nothing    
  83.    
  84. End function     
  85.   
  86. Call write_txt("c:\aaa.txt")  
  87. 参考:http://blog.csdn.net/xibuzhihun/article/details/6801990

 

 

VB自定义class,就一早默认有Initialize和Terminate,相当于初始化和结束

class test
private Sub Class_Initialize  '初始化
dim t 
...........
end sub 

private Sub Class_Terminate '退出类
 set t = nothing
end sub

 

 

分享到:
评论

相关推荐

    vbs 基础知识

    VBS基础知识是学习Windows批处理、网页交互以及自动化脚本编写的重要一环。以下是对VBS核心概念、语法结构、常用函数及应用领域的详细介绍。 1. **VBS基础语法** - **变量声明**:VBS中的变量无需提前声明,可以...

    很不错的VBS基础知识教程

    ### VBS基础知识教程详解 #### 一、VBS (VBScript) 概述 VBS (Visual Basic Script Edition) 是一种轻量级的脚本语言,由微软开发,基于Visual Basic编程语言。作为一种脚本语言,VBS的主要特点是无需编译即可直接...

    QTP初级2_VBS基础知识

    ### QTP初级2_VBS基础知识 #### 一、VBS简介与特点 VBS(Visual Basic Scripting Edition),即Visual Basic 脚本版,是一种轻量级的编程语言,适用于自动化测试工具如QTP(现称为UFT,Unified Functional Testing...

    vbs基本知识点,包括变量,控制结构,过程,常用函数!

    以上只是VBS基础知识的一部分,实际使用中还可以结合WMI(Windows Management Instrumentation)进行系统管理,或者使用ADODB对象访问数据库。VBS的灵活性和广泛的应用场景使其成为Windows环境下不可或缺的脚本语言...

    VBS基础视频教程第六讲

    一、VBS基础知识 1. 变量:VBS支持多种数据类型,如String(字符串)、Integer(整型)、Double(双精度浮点型)等。变量声明可以使用Dim、Private、Public等关键字,无需预先定义类型,VBS会自动推断。 2. 控制...

    Vbs脚本编程简明教程.zip_vbs_vbs基础教程_vbs编程

    1. **VBS基础知识**: - **变量**:在VBS中,变量不需要声明类型,直接使用Dim关键字即可创建,如`Dim myVar`。 - **数据类型**:包括String(字符串)、Integer(整数)、Double(双精度浮点数)、Boolean(布尔...

    VBS学习(入门)

    ### VBS基础知识 #### 脚本入门:Hello World VBS脚本的编写可以非常简单,一个经典的入门示例就是“Hello World”程序。只需在任何文本编辑器中输入以下代码: ```vbs MsgBox "Hello World!" ``` 保存为`.vbs`文件...

    vbs基本知识

    以上只是VBS基础知识的冰山一角,实际应用中还包括错误处理、数组、类等高级概念。通过不断学习和实践,你可以掌握VBS并利用它实现丰富的自动化任务。例如,`Vbs_基础知识.vbs`这个文件可能就包含了一些基础的VBS...

    vbs教程-从初级到高级,步步为营

    1. **VBS基础知识** - **语法结构**:VBS的语法简洁明了,包括变量声明、数据类型、运算符、流程控制语句(如If...Then、For...Next、Do...Loop等)。 - **对象模型**:VBS广泛利用Windows的COM(Component Object...

    vbs蓝屏代码用vbs做的蓝屏代码

    1. **了解VBS基础知识**:掌握基本的VBS语法可以帮助识别潜在的危险脚本。 2. **谨慎运行未知脚本**:不要轻易运行来自不可信来源的脚本文件,尤其是那些声称能够引发蓝屏或其他异常行为的脚本。 3. **备份重要数据*...

    vbs的小教材和代码

    1. **VBS基础知识**: VBS是一种解释型的、弱类型的脚本语言,它简化了Visual Basic的语法,使其更适合非专业程序员使用。VBS的主要应用领域包括ActiveX脚本、Windows脚本宿主(WSH)和ASP(Active Server Pages)...

    vbs教程(vbscript,含多个文件)

    在“vbs教程(vbscript,含多个文件)”这个资源中,包含了丰富的学习材料,对于初学者来说是掌握VBS基础知识的理想选择。 首先,我们来看“vbs的一些资料(DOC格式的).doc”。这份文档很可能包含了VBS的关键概念,如...

    VB打造的自动字机生成VBS

    1. **VBS基础知识**:了解变量声明、数据类型、控制流语句和函数。 2. **对象模型**:学习如何使用WScript.Shell和Timer对象。 3. **事件驱动编程**:可能涉及定时器的Interval属性和Timeout事件。 4. **字符串处理*...

    vbs脚本的例子(适合初学者)

    - **在线教程**:初学者可以通过在线平台如W3Schools、Microsoft Docs等学习VBS基础知识。 - **书籍**:如《Visual Basic Script编程指南》等书籍可以帮助深入理解VBS。 - **实践**:通过编写简单的脚本并运行,...

    vbs基础教程,vbsvbs的基础

    VBScript(Visual Basic Script)...掌握VBScript的基础知识,将有助于你编写出功能强大的批处理脚本、动态网页,甚至在更复杂的应用场景中发挥作用。通过不断实践和查阅文档,你将能够熟练运用VBScript解决实际问题。

    vbs帮助文档vbscrui.rar

    1. **VBS基础知识**:VBS是基于事件驱动的,它提供了大量的内建对象,如WScript、FileSystemObject、Scripting.Dictionary等,用于处理系统任务和数据操作。它的语法简洁,易于学习,适合编写小型脚本和自动化任务。...

    QTP中VBS语言脚本介绍

    一、VBS基础知识 1. 变量:VBS中的变量无需预声明,可直接使用。有几种不同的变量类型,如Variant(默认类型,可以存储任何数据类型)、String(字符串)、Integer(整型)、Double(双精度浮点型)等。 2. 数据...

    vbs简介概述.txt

    ### VBS基础知识 #### 1. **创建对象** - 在VBS中,`CreateObject`方法用于创建COM对象实例。 - 示例:`Set obj = CreateObject("SAPI.SpVoice")`,此处创建了一个语音合成对象,可以用来朗读文本。 - 使用场景...

    VBS基础.txt

    根据提供的文件信息,我们可以整理出关于VBS(Visual Basic Script Edition)的基础知识点,涉及VBS的概念、使用场景、基本语法等内容。 ### VBS是什么? VBS全称是Visual Basic Script Edition,是由微软开发的一...

    vbs简明教程学习资料

    #### 二、VBS基础知识 1. **Hello World程序** - 示例代码:`MsgBox "Hello World!"` - 解析: - `MsgBox` 函数用于显示消息框。 - `"Hello World!"` 是字符串常量,表示消息框中显示的文字。 - 运行方法: -...

Global site tag (gtag.js) - Google Analytics