第一讲应该是基本语法,但是一本正经的讲好像太枯燥,下面就从几个例子来看。
Dim YourName ' dimension the variable YourName = InputBox("Hello! What is your name?") ' ask for the user's name MsgBox "Hello " & YourName & " ! Pleased to meet you." ' display a greeting;
Dim 是关键字 用来声明变量的。
在英文状态下的分隔号是注释符号,后面的都是注释内容。
InputBox() 为内建函数,弹出输入对话框,括号中的字符就是对话框的输出内容,同时下面自动生成一个文本编辑框就是用来输入内容的。输入的内容会赋值给定义的自变量“YourName”;
MsgBox 是内建函数,用不用括号都无所谓,这就是VB简单的原因。
“&”为连接符,用来把字符串连接起来。Msgbox 后面紧跟的参数第一个参数,将来显示在消息对话框中。
Dim SomeNumber SomeNumber = 999 SomeNumber = SomeNumber + 2 SomeNumber = SomeNumber + 999 MsgBox SomeNumber
首先定义了一个变量,Some Number,在没有赋值以前,谁也不知道这个变量是什么类型的。这就是VB的特点:随便用。
直到下下面赋值了一个整数999. Some Number就变成了整数。经过运算以后SomNumer变成了2000;通过消息对话框输出。
Dim SomeNumber SomeNumber = 999 SomeNumber = SomeNumber + 2 SomeNumber = SomeNumber + 999 SomeNumber = "汶河之滨" MsgBox SomeNumber
刚开始SomNumber为整数,后面又变成了字符串。将来调试的时候会比较麻烦,VBSctript只支持一种数据类型——Variant,无需将变量和函数指定为某种数据类型。
Dim YourName Dim Greeting YourName = InputBox("Hello! What is your name?") If YourName = "" Then Greeting = "OK. You don't want to tell me your name." Else Greeting = "Hello, " & YourName & ", great to meet you." End If
这里开始出现了判断分支结构
// A do BLOCK IF XXX THEN SSSSS Else SSSSS END IF
在VBS 中缩进是非必须的,但是为了程序的易读性还是缩进的比较好。
Dim Greeting Dim YourName Dim TryAgain Do TryAgain = "No" YourName = InputBox("Please enter your name:") If YourName = "" Then MsgBox "You must enter your name to continue." TryAgain = "Yes" Else Greeting = "Hello, " & YourName & ", great to meet you." End If Loop While TryAgain = "Yes" MsgBox Greeting
// A CODE BLOCK DO SSSS Loop While XXXX
SSSS至少被执行一次。当XXX满足条件的时候会一直执行SSSS;关于VBS的循环语句结构还有很多,去参考书中看看就很清楚了。
Dim Counter MsgBox "Let's count to ten. Ready?" For Counter = 1 to 10 MsgBox Counter Next MsgBox "Wasn't that fun?"
这个例子也很简单就是简单的循环结构和其他语法都是相同的。
Dim Counter Dim WordLength Dim InputWord Dim WordBuilder InputWord = InputBox ("Type in a word of phrase to use") WordLength = Len(InputWord) ’Len() 内建函数,求字符串长度 For Counter = 1 to WordLength MsgBox Mid(InputWord, Counter, 1) WordBuilder = WordBuilder & Mid(InputWord, Counter, 1) Next MsgBox WordBuilder & " contains " & WordLength & " characters."
Mid(Words,m,n) 内建函数,取字符串Words中第m个字符开始的n个字符。
Dim PartingGreeting Dim VisitorName VisitorName = PromptUserName ‘这里调用了一个函数。 If VisitorName <> "" Then PartingGreeting = "Goodbye, " & VisitorName & ". Nice to have met you." Else PartingGreeting = "I'm glad to have met you, but I wish I knew your name." End If MsgBox PartingGreeting Function PromptUserName ‘函数的定义 Function开头 ' This Function prompts the user for their name. ' It incorporates various greetings depending on input by the user. Dim YourName Dim Greeting YourName = InputBox("Hello! What is your name?") If YourName = "" Then Greeting = "OK. You don't want to tell me your name." ElseIf YourName = "abc" Then Greeting = "That's not a real name." ElseIf YourName = "xxx" Then Greeting = "That's not a real name." Else Greeting = "Hello, " & YourName & ", great to meet you." If YourName = "Fred" Then Greeting = Greeting & " Nice to see you Fred." End If End If MsgBox Greeting PromptUserName = YourName End Function
VBS中,函数都不需要定义输入输出参数,函数名就能当参数用,真是开了眼了。