三、VBS基础知识<下篇>


VBS虽然是脚本语言,但也有高级语言的属性,比如定义类等,下面我们来看看如何定义VBS类的,实例化,调用类的函数及一个综合例子

一、类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
'定义类
Class Stu
    '定义带参数的函数,并有返回值
   Function output_fun(fir,sec)
        output_fun = fir &amp;amp; sec
    End Function

    '定义带参数的过程
   Sub output_sub(fir)
        Const con = "Marry,"
        MsgBox con &amp;amp; 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:排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'例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) &amp;gt; 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:将文件中的指定位置的#号以特定字符替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
'例2:将文件中的指定位置的#号以特定字符替换
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 &amp;lt; 1 Or input_month &amp;gt;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 &amp;lt; 1 or input_day &amp;gt; 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&amp;gt;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 "输入的天数在第" &amp;amp; total_day &amp;amp; "个位置"
   '将对应位置的#号,用输入的字符将其替换
   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 &amp;amp; " 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("d:\aaa.txt")
Tags:
文 / 甲乙丙丁
LEAVE A REPLY

loading