3.Static
使用范圍:過(guò)程
在整個(gè)代碼運行期間都能保留使用 Static 語(yǔ)句聲明的變量的值,直至該模塊復位或重新啟動(dòng)。

上面兩個(gè)過(guò)程每個(gè)連續運行5次,demo1運行時(shí)消息框中的數字會(huì )一直遞增(每次加1),而demo2運行時(shí)消息框始終顯示1。
總結:
Dim和Private關(guān)鍵字在定義模塊級私有變量時(shí)是一樣的。
在定義變量時(shí),Public和Private關(guān)鍵字只能用于定義模塊級變量,而Static只能用于過(guò)程內部定義靜態(tài)變量。
1)Dim可以用于過(guò)程內部和外部,但不管用于過(guò)程內外,使用Dim語(yǔ)句定義的變量均為私有,無(wú)法在模塊外使用;
2)Public和Private只能在過(guò)程外使用,用來(lái)定義模塊級變量,區別是Public定義的模塊級變量對外界可見(jiàn),可以被本模塊和其他模塊使用。而Private定義的模塊級變量,只能用于
本模塊,不能被其他模塊調用。
3)Static只能在過(guò)程內部定義靜態(tài)變量,由Static定義的變量只能用于本過(guò)程,不能被本模塊的其他模塊調用,更不能被其他模塊調用。
二、變量的生命周期
變量保留其值的這段時(shí)間,稱(chēng)為生存周期。變量的值可能在整個(gè)生存周期都在改變,但它仍然保留著(zhù)一些值。當變量失去了范圍之后,它也就不再保存著(zhù)任一個(gè)值。
當過(guò)程開(kāi)始運行時(shí),所有的變量都會(huì )被初始化。一個(gè)數值變量會(huì )初始化成 0,變長(cháng)字符串被初始化成零長(cháng)度的字符串,而定長(cháng)字符串會(huì )被填滿(mǎn) ASCII 字符碼 0 所表示的字符或是 Chr(0)。Variant變量會(huì )被初始化成 Empty。用戶(hù)定義類(lèi)型中每一個(gè)元素變量會(huì )被當成個(gè)別變量來(lái)做初始化。
當聲明一個(gè)對象變量時(shí),內存中雖有保留空間,但它的值會(huì )被設置成 Nothing,直到利用 Set 語(yǔ)句對它指定一個(gè)對象引用。
如果在代碼的運行期間,變量的值一直沒(méi)有改變,則它會(huì )繼續保有它的初始值直到它丟失范圍為止。
Dim 語(yǔ)句聲明過(guò)程的級別變量將保留一個(gè)值,直到此過(guò)程結束為止。如果該過(guò)程調用其它的過(guò)程,則在這些過(guò)程正在運行的同時(shí),屬于調用者過(guò)程的變量也保留它的值。
如果過(guò)程的級別變量是用 Static 關(guān)鍵字來(lái)聲明的,則只要代碼正在任何模塊中運行訪(fǎng)問(wèn)該變量后仍會(huì )保留它的值。它的存活期和模塊級別的變量是一樣的。
之前有提到代碼重新設置會(huì )把模塊級變量和靜態(tài)變量的值復位,另外還有個(gè)End語(yǔ)句也會(huì )如此。
聯(lián)系客服