VBA 模块级变量和过程级变量,全局变量,局部变量,end,exit end sub等影响
一個(gè)SUB內(nèi)變量盡量要獨(dú)立,因?yàn)樗凶兞慷荚趕ub生效
?
?
1、全局變量在整個(gè)工程文件內(nèi)都有效;
2、靜態(tài)全局變量只在定義它的文件內(nèi)有效;
3、靜態(tài)局部變量只在定義它的函數(shù)內(nèi)有效,且程序僅分配一次內(nèi)存,函數(shù)返回后,該變量不會(huì)消失;局部變量在定義它的函數(shù)內(nèi)有效,但是函數(shù)返回后失效。
4、全局變量和靜態(tài)變量如果沒(méi)有手工初始化,則由編譯器初始化為0。局部變量的值不可知。
5、靜態(tài)局部變量與全局變量共享全局?jǐn)?shù)據(jù)區(qū),但靜態(tài)局部變量只在定義它的函數(shù)中可見(jiàn)。靜態(tài)局部變量與局部變量在存儲(chǔ)位置上不同,使得其存在的時(shí)限也不同,導(dǎo)致對(duì)這兩者操作 的運(yùn)行結(jié)果也不同。
https://blog.csdn.net/Littlehero_121/article/details/88634153
?
?
- Public和Private只能在過(guò)程外使用,用來(lái)定義模塊級(jí)變量,區(qū)別是Public定義的模塊級(jí)變量對(duì)外界可見(jiàn),可以被本模塊和其他模塊使用。而Private定義的模塊級(jí)變量,只能用于本模塊,不能被其他模塊調(diào)用。
- Dim可以用于過(guò)程內(nèi)部和外部,但不管用于過(guò)程內(nèi)外,使用Dim語(yǔ)句定義的變量均為私有,無(wú)法在模塊外使用;
- Static只能在過(guò)程內(nèi)部定義靜態(tài)變量,由Static定義的變量只能用于本過(guò)程,不能被本模塊的其他Sub或Function調(diào)用,更不能被其他模塊調(diào)用。
?
跨模塊級(jí)
public ?(只能定義在過(guò)程外)
模塊級(jí)
public ? ?(只能定義在過(guò)程外)
private ? (只能定義在過(guò)程外)
dim ??
過(guò)程級(jí)
dim
static ? (只能定義在過(guò)程內(nèi))
?
?
?
先把代碼寫(xiě)著,一會(huì)不全
局部變量
dim k?
k?
?這種其他sub無(wú)法
Dim j Public k Private lSub test01() Static mj = 1 k = 0 l = 3 m = 5For i = 1 To 5k = i * iDebug.Print k NextEnd SubSub test02()Debug.Print k End SubSub test03()test01 Debug.Print k Debug.Print j Debug.Print l Debug.Print mEnd Sub?
'同一個(gè)sub里,不要用重復(fù)的變量名!
為啥循環(huán)完了,i=6了?
Dim j Public k Private lSub test01() Static mj = 1 k = 0 l = 3 m = 5For i = 1 To 5k = i * iDebug.Print "i=" & i; " ";Debug.Print "k=" & k Next'為毛i=6了? Debug.Print "i=" & i Debug.Print "i=" & i Debug.Print "i=" & i'同一個(gè)sub里,不要用重復(fù)的變量名! x = i + 1 Debug.Print "x=" & xEnd SubSub test02()Debug.Print k End SubSub test03()test01 Debug.Print k Debug.Print j Debug.Print l Debug.Print m End Sub?
?
總結(jié)
以上是生活随笔為你收集整理的VBA 模块级变量和过程级变量,全局变量,局部变量,end,exit end sub等影响的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 优秀工程师应该具备哪些素质_作为现代工程
- 下一篇: qt 部署 错误_QT for Wind