【原创】VBA学习笔记(26)----VBA种 的变量,可以不定义直接表达式运算,怎么比python还自由? static--未完成

版权声明:一起学习,一起成长,欢迎关注 奔跑的犀牛先生 https://blog.csdn.net/xuemanqianshan/article/details/89112172

变量的作用范围

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

猜你喜欢

转载自blog.csdn.net/xuemanqianshan/article/details/89112172
今日推荐