变量的作用范围
1 过程级变量。只声明在过程内,没加public
同一模块的其他过程也无法调用
2 模块级变量,对象的脚本,也算模块吧?
只在模块内有效,
所以一般,模块开始,会有个声明过程。。。。这个认为是个单独的过程
3 声明语句
Dim a as integer
Private a as integer
基本一样
不定义,直接用也一样,不定义的可以被赋值为各种数值,被定义的不行
4 public 整个工程的所有代码都可以使用
跨工程,实际也就跨了excel表,是不行的
5 除了static之外,其他变量,都只在 代码使用开始生产,代码sub结束就删除
Static可以持续到 关闭工程前都生效。每次更新的值也可以被保留
Static a as string
---试试
------千万不要赋值,开头赋值了就看不到static效果了
------另外就是不赋值,默认就是0? 可以不赋值,直接运行表达式,这比python还自由。。。。。
Sub text()
Dim a As Byte
Static b As Byte
a = a + 1
b = b + 1
Debug.Print "a等于" & a
Debug.Print "b等于" & b
End Sub
EXCEL重新开关表了以后,也是不会报错的
http://club.excelhome.net/thread-98177-1-1.html
下面这样是错误的
- 我的理解static跟dim是两种相对的赋值方式,动态变量程序结束后释放,静态变量workbook结束后释放
dim i1 as integer =1
static i2 as integer =1
i1=i1+1
i2=i2+1
程序结束后i1的值为1
i2的值随着程序的执行次数改变对吗?
- 我不明白的还有它常用于哪些情况下
谢谢指导
Sub Counter()
Dim mCounter as integer
mCounter= mCounter+1
Msgbox mCounter
End sub
例程试验二:当我们用“Static”关键字时,“mCounter”变量值会随着程序执行次数进行累加。
Sub Counter()
Static mCounter as integer
mCounter= mCounter+1
Msgbox mCounter
End sub
利用“Static”关键字声明变量的这一特性,我们可以用来实现对数据库系统登陆次数限制,如三次登陆错误则退出系统。
例程如下:
Static intCounter as integer
If txtPass <> “密码” then
intCounter =intCounter+1
Else
DoCmd.OpenForm “主窗体”
End if
If intCounter > 3 then
Msgbox "你已三次输错密码,系统将退出!"
DoCmd.Quit
End if
转自:http://accesshome.5d6d.net/thread-3186-1-1.html