W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
既然你已經(jīng)知道如何命名和聲明變量了,是時(shí)候開(kāi)始使用它們了。我們以學(xué)習(xí)如何創(chuàng)建變量開(kāi)始。在VB中,你可以在你程序的任何地方創(chuàng)建變量,只有給它賦個(gè)值就行。
6. 在代碼窗口,輸入CalcCost過(guò)程,如下面所示。這個(gè)過(guò)程基于下述假設(shè)來(lái)計(jì)算購(gòu)買(mǎi)一個(gè)計(jì)算器的價(jià)錢(qián):計(jì)算器的價(jià)格為35美元,銷(xiāo)售稅為8.5%
Sub CalcCost()
slsPrice = 35
slsTax = 0.085
Range("A1").Formula = "The cost of calculator"
Range("A4").Formula = "Price"
Range("B4").Formula = slsPrice
Range("A5").Formula = "Sales Tax"
Range("A6").Formula = "Cost"
Range("B5").Formula = slsPrice * slsTax
Cost = slsPrice + (slsPrice * slsTax)
With Range("B6")
.Formula = Cost
.NumberFormat = "0.00"
End With
strMsg = "The calculator total is " & "$" & Cost & "."
Range("A8").Formula = strMsg
End Sub
過(guò)程CalcCost使用了四個(gè)變量:slsPrice,slsTax,Cost和strMsg。因?yàn)檫@些變量都沒(méi)有顯式聲明,所以它們的數(shù)據(jù)類(lèi)型都是Variant。變量slsPrice和slsTax是在過(guò)程的開(kāi)始時(shí)通過(guò)給它們賦值而產(chǎn)生的,變量Cost分配的值是下面計(jì)算的結(jié)果:slsPrice + (slsPrice * slsTax)。價(jià)格的計(jì)算是使用變量slsPrice和slsTax提供的值來(lái)進(jìn)行的。變量strMsg將信息合并為一個(gè)文本信息給用戶,然后這個(gè)信息是在工作表的一個(gè)單元格里輸入一個(gè)完整的句子。
當(dāng)你給變量賦值時(shí),需要在變量名稱(chēng)后面輸入一個(gè)等號(hào),等號(hào)之后是你要輸入的值。它可以是數(shù)字,公式或者帶引號(hào)的文本。賦給變量slsPrice,slsTax和Cost的值比較容易理解,然而保存在變量strMsg的值則有些棘手。解釋一下變量strMsg的內(nèi)容吧。
strMsg = "The calculator total is " & "$" & Cost & "."
1、字符串“The calculator total is ”被引號(hào)包括起來(lái)了,注意,后面的引號(hào)前有個(gè)空格。
?
2、字符&讓你將一個(gè)字符串附加在另一個(gè)字符串或者變量的內(nèi)容后面
3、在引號(hào)里面的美元符合(“$”)用來(lái)表明貨幣類(lèi)型。因?yàn)槊涝鲜亲址?,它需要用引?hào)來(lái)包括起來(lái)
4、字符&必須用于每次你要在前面的字符串后加新信息的時(shí)候
?
5、變量Cost是一個(gè)占位符,當(dāng)過(guò)程運(yùn)行時(shí),計(jì)算器的實(shí)際價(jià)格將顯示在這兒
?
6、字符&可以連接任何字符串
?
7、句號(hào)用引號(hào)包括起來(lái)。當(dāng)你需要在句子后面加句號(hào)時(shí),如果它是在一個(gè)變量后面時(shí),你必須單獨(dú)再在后面加上它。
現(xiàn)在來(lái)運(yùn)行它,將光標(biāo)放在過(guò)程CalcCost的任何地方,并且選擇“運(yùn)行”-“運(yùn)行宏”
技巧:變量初始化
VB創(chuàng)建變量的時(shí)候就將其初始化了。變量假定為它們的默認(rèn)值,數(shù)字型變量設(shè)置為0,布爾型變量初始化為False,字符串變量設(shè)置為空字符(””),已經(jīng)日期型變量則設(shè)置為1899年12月30日注意,你在運(yùn)行這個(gè)過(guò)程時(shí),VB可能會(huì)彈出下面的信息:“編譯錯(cuò)誤:變量未定義”。如果這個(gè)情況發(fā)生了,點(diǎn)擊確定以關(guān)閉這個(gè)信息框。VB將會(huì)選中變量slsPrice并且加亮過(guò)程名稱(chēng)Sub CalcCost,標(biāo)題欄則顯示“Microsoft Visual Basic-Chap03.xls [中斷]”。VB中斷模式允許你在繼續(xù)之前更正錯(cuò)誤。如果你遇到上面提及的錯(cuò)誤時(shí),通過(guò)選擇“運(yùn)行”-“重新設(shè)置”來(lái)退出中斷模式;接下來(lái),在代碼窗口的上面刪除顯示在第一行的語(yǔ)句Option Explicit。Option Explicit語(yǔ)句意味著在本模塊里使用的所有變量都必須經(jīng)過(guò)正式聲明。刪除OptionExplicit語(yǔ)句后,重新運(yùn)行該過(guò)程,運(yùn)行后,切換到Excel界面,過(guò)程運(yùn)行的結(jié)果應(yīng)該和圖3-1一致。
圖3-1 VBA過(guò)程可以在工作表里輸入數(shù)據(jù)并計(jì)算結(jié)果
單元格A8顯示變量strMsg的內(nèi)容。注意,在單元格B6里面輸入的價(jià)格有兩位小數(shù),而strMsg的價(jià)格卻顯示三位小數(shù)。要在單元格A8里顯示帶兩位小數(shù)的計(jì)算器價(jià)格,你必須給變量Cost設(shè)置需要的格式,而不是給該單元格設(shè)置格式。VBA有專(zhuān)門(mén)的函數(shù)讓你改變數(shù)據(jù)格式,你將使用Format函數(shù)來(lái)改變變量Cost的格式。該函數(shù)的語(yǔ)法是:
Format(expression, format)
Expression(表達(dá)式)是你要設(shè)置格式的值或者變量;format(格式)則是你要使用的格式類(lèi)型。
1. 在CalcCost過(guò)程里更改變量Cost的計(jì)算:
Cost = Format(slsPrice + (slsPrice * slsTax), "0.00")
2. 將With…End With代碼塊取代為下述指令:
Range("B6").Formula = Cost
3. 將語(yǔ)句Range("B5").Formula = slsPrice * slsTax改為下面指令:
Range("B5").Formula = Format((slsPrice * slsTax), "0.00")
4. 重新運(yùn)行修改后的程序
試驗(yàn)過(guò)程CalcCost之后,你可能會(huì)困惑,為什么我們要為聲明變量煩惱,如果VB自己可以處理未聲明的變量的話?因?yàn)檫^(guò)程CalcCost是如此之短,因此你不必?fù)?dān)心VB每次使用這些Variant變量時(shí)會(huì)占用多少內(nèi)存。然而,在短的過(guò)程中,內(nèi)存問(wèn)題不重要,但是當(dāng)你輸入變量名稱(chēng)時(shí),你很可能出現(xiàn)錯(cuò)誤。當(dāng)你第二次使用Cost變量時(shí),你忽略了“o”而寫(xiě)成“Cst”,后果會(huì)如何呢?
Range("B6").Formula = Cst
如果你使用了Tax在下面的公式中,而沒(méi)有用slsTax,結(jié)果你將得到什么呢?
Cost = Format(slsPrice + (slsPrice * Tax), "0.00")
引入上面提及的錯(cuò)誤后過(guò)程CalcCost的結(jié)果顯示在圖3-2。
圖3-2 變量名稱(chēng)錯(cuò)誤導(dǎo)致結(jié)果錯(cuò)誤
注意,在圖3-2里,單元格B6沒(méi)有數(shù)值,因?yàn)閂B沒(méi)有找到變量Cst的任務(wù)語(yǔ)句。再因?yàn)閂B不知道銷(xiāo)售稅,顯示的計(jì)算器價(jià)格為總價(jià)(而沒(méi)有加稅金,見(jiàn)單元格A8)。VB不會(huì)猜測(cè),它只是簡(jiǎn)單地做你告訴它的事情。這帶我們到下一個(gè)部分,解釋如何避免這類(lèi)錯(cuò)誤。在你繼續(xù)之前,確保更正變量Cst和Tax為Cost和slsTax。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: