工控隨筆_19_西門子_WinCC的VBS腳本_08_常量和流程控制_01

  在編程的過程當中,有時候咱們會使用一些固定的值,例如圓周率,或者某我的的生日,或者家庭住址等等,html

這些信息對於一個對象來講一旦肯定就不會改變,所以咱們在編程的時候也不但願這些信息會改變,在VBS裏面
編程

也提供了和其餘一些語言中同樣的機制: 常量。數組

  常量大致有兩種類型: 字面值常量 和 具名常量。編程語言

 

1、常量oop

Option Explicit

'   vbs 常量
'vbs有兩種類型的常量: 字面值常量 和 具名常量

'字面值常量
'字面值常量, 就如字面意思同樣,其值就和字面意思表達的同樣
Dim strAddress
'下面語句的 中華人民共和國上海市 就是字面值常量
strAddress = "中華人民共和國上海市"

Dim nYear
'下面語句的 2000 就是字面值常量
nYear = 2000


'具名常量
'一、具名常量,其實質就是其值不能修改的變量, 這個變量一旦初始化後
'   其存儲的內容不能被改變, 
'二、具名常量經過關鍵字 const 指定
Const Pi = 3.1415926 

'具名常量初始化後不能在賦值
Pi= 10

MsgBox Pi

  如上代碼,具名常量初始化後不能再進行賦值,若是賦值的話就會報錯。以下圖所示:spa

 

  這個地方須要注意。code

 

Option Explicit

'   vbs 常量
'vbs有兩種類型的常量: 字面值常量 和 具名常量

'字面值常量
'字面值常量, 就如字面意思同樣,其值就和字面意思表達的同樣
Dim strAddress
'下面語句的 中華人民共和國上海市 就是字面值常量
strAddress = "中華人民共和國上海市"

Dim nYear
'下面語句的 2000 就是字面值常量
nYear = 2000


'具名常量
'一、具名常量,其實質就是其值不能修改的變量, 這個變量一旦初始化後
'   其存儲的內容不能被改變, 
'二、具名常量經過關鍵字 const 指定
Const Pi = 3.1415926 

'具名常量初始化後不能在賦值
'Pi= 10

MsgBox Pi


'vbs的內置具名常量
'在vbs中內置了部分具名常量,這些常量方便使用vbs
'典型的具名常量就是 msgbox的具名常量,經過不一樣的具名常量顯示不一樣的按鈕形式
'一、僅顯示OK、肯定按鈕
MsgBox Pi,vbOKOnly

'二、顯示yes、no按鈕
MsgBox Pi,vbYesNo

'三、顯示 i 圖標
MsgBox Pi,vbYesNo + vbInformation 

'對於vbs內置的具名常量,建議能夠查手冊,這裏再說幾個經常使用的,其餘很少說
' vbNewLine  這個是表示再起一行的意思
' vbcrlf 這個與上面的vbnewline是一個意思
MsgBox Pi & vbNewLine  & "新行" & vbCrLf & "新的第二行" 

 

2、流程控制orm

   流程控制是編程語言最終要的概念之一,須要注意。 htm

Option Explicit

Rem 流程控制

'流程控制是編程語言中重要的概念,經過流程控制能夠實現複雜的功能控制
'流程控制主要有: 分支、循環兩種

'    分支
'一、分支主要有IF語句
'二、select case 語句

'if語句
Dim strPrompt
Dim nSelect

strPrompt = vbCrLf & "1: 選擇Yes說哈哈" & vbCrLf & _
                     "2: 選擇No說嘻嘻" & vbCrLf & "3: 選擇取消,不說話"
nSelect = MsgBox("請選擇不一樣的按鈕,而後實現不一樣的功能" & strPrompt, vbYesNoCancel)

If nSelect = vbyes Then
    MsgBox "選擇Yes說哈哈"
ElseIf nSelect = vbno Then
    MsgBox "選擇No說嘻嘻"
Else
    MsgBox "選擇取消,不說話"
End If

'這個地方須要注意select case語句的執行與其餘語言的不一致的地方
Select Case nSelect
    Case vbyes
        MsgBox "選擇Yes哈哈"
    Case vbno
        MsgBox "選擇No說嘻嘻"
    Case vbcancel 
        MsgBox "選擇取消,不說話"
    Case Else
        MsgBox "不正確的選擇"
End Select
    

 
'循環
'循環共有四種形式
'一、 for..... next
'二、 do....loop、
'三、 while....wend


'for 循環
'for 循環有兩種形式
'一、for...next
'二、for each .....next

'for...next
'for....next循環主要用於循環次數明確的循環應用,例如打印斐波那契數列
'的前多少項
Dim nStart
Dim nSecond 
Dim nLoop
Dim strMsg
Dim nTemp

'斐波那契數列的開始兩項
nStart = 1
nSecond = 1
strMsg = nStart & vbNewLine & nSecond

'計算斐波那契數列的第3-30項
For nLoop = 2 To 30
    nTemp = nSecond
    nSecond = nSecond + nStart
    nStart = nTemp
    strMsg = strMsg & vbNewLine & nSecond
Next
MsgBox strMsg

'for each.....next循環 
'for each....next循環是用來遍歷集合中全部元素的一種特定的循環結構
'經過這個循環來實現對循環次數不肯定的狀況進行遍歷
'使用for each....next循環須要使用關鍵字in, in表示在集合中訪問元素
'一樣須要使用一個循環控制變量,在循環中這個循環變量表明的就是集合中的元素
'可是這個變量在使用完畢以後,循環變量就 objLoop = empty 
'若是要再使用必須從新賦值
Dim objFSO
Dim objFolder
Dim objLoop
Dim strFileName

Set objFso=CreateObject("Scripting.FileSystemObject")
Set objFolder= objFSO.GetFolder("D:\01_vbs")
For Each objLoop In objFolder.Files
    strFileName =strFileName & objLoop.Name & vbCrLf
    'MsgBox "我是循環變量,個人值爲:" & objLoop
Next
MsgBox strFileName

'下面的語句檢測objLoop變量在循環結束後的值
If IsEmpty(objLoop) Then
    MsgBox  "已經設置爲empty"
ElseIf IsNull(objLoop) then
    MsgBox  "已經設置爲空"
Else
    MsgBox "未知結果"
End If

'for each....next 循環還能夠用來遍歷數組
'注意新的腳本解釋器對於數組維數的定義,這裏5表示下標最大爲5,可是開始
'是從0,因此有6個元素
Dim nArrayName(5)

nArrayName(0) = 1
nArrayName(1) = 2
nArrayName(2) = 3
nArrayName(3) = 4
nArrayName(4) = 5
nArrayName(5) = 6

For Each nLoop In nArrayName 
    MsgBox nLoop
Next

MsgBox "遍歷後,nLoop的值爲:" & nLoop

 

 

 

    在使用For Each...next 語句的時候,要注意循環變量的值,在循環結束後已經自動的被設置對象

爲Empty,若是這個時候訪問的話必須再次賦值,不然就會出錯,以下圖所示:

  循環變量在循環結束後被設置爲 Empty。

3、Tips

一、分支結構不要嵌套太深

二、循環結構知道次數的一半用For語句

三、數組、集合遍歷可使用For each...next語句。

 

--------------------------------------------------------------分割線---------------------------------------------------------------

一、文章均爲我的原創,歡迎轉載,轉載請保留出處:https://www.cnblogs.com/volcanol/

二、獲取工控PLC、變頻器、HMI、計算機、Windows、Linux、嵌入式資料點擊:獲取資料

三、若是您以爲文章對您有幫助可轉至頁面上半部分打賞,或移步:打賞 

四、或者在頁面右下角點推薦喲!!!

--------------------------------------------------------------分割線---------------------------------------------------------------

相關文章
相關標籤/搜索