1、全局变量在整个工程文件内都有效;
2、静态全局变量只在定义它的文件内有效;
3、静态局部变量只在定义它的函数内有效,且程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。
4、全局变量和静态变量如果没有手工初始化,则由编译器初始化为0。局部变量的值不可知。
5、静态局部变量与全局变量共享全局数据区,但静态局部变量只在定义它的函数中可见。静态局部变量与局部变量在存储位置上不同,使得其存在的时限也不同,导致对这两者操作 的运行结果也不同。
https://blog.csdn.net/Littlehero_121/article/details/88634153
-
Public和Private只能在过程外使用,用来定义模块级变量,区别是Public定义的模块级变量对外界可见,可以被本模块和其他模块使用。而Private定义的模块级变量,只能用于本模块,不能被其他模块调用。
-
Dim可以用于过程内部和外部,但不管用于过程内外,使用Dim语句定义的变量均为私有,无法在模块外使用;
-
Static只能在过程内部定义静态变量,由Static定义的变量只能用于本过程,不能被本模块的其他Sub或Function调用,更不能被其他模块调用。
跨模块级
public (只能定义在过程外)
模块级
public (只能定义在过程外)
private (只能定义在过程外)
dim
过程级
dim
static (只能定义在过程内)
先把代码写着,一会不全
dim k
这种其他sub无法
Dim j
Public k
Private l
Sub test01()
Static m
j = 1
k = 0
l = 3
m = 5
For i = 1 To 5
k = i * i
Debug.Print k
End Sub
Sub test02()
Debug.Print k
End Sub
Sub test03()
test01
Debug.Print k
Debug.Print j
Debug.Print l
Debug.Print m
End Sub
'同一个sub里,不要用重复的变量名!
为啥循环完了,i=6了?
Dim j
Public k
Private l
Sub test01()
Static m
j = 1
k = 0
l = 3
m = 5
For i = 1 To 5
k = i * i
Debug.Print "i=" & i; " ";
Debug.Print "k=" & k
'为毛i=6了?
Debug.Print "i=" & i
Debug.Print "i=" & i
Debug.Print "i=" & i
'同一个sub里,不要用重复的变量名!
x = i + 1
Debug.Print "x=" & x
End Sub
Sub test02()
Debug.Print k
End Sub
Sub test03()
test01
Debug.Print k
Debug.Print j
Debug.Print l
Debug.Print m
End Sub
VBA的全局变量在模块的开头定义,即可在整个工作簿使用,包括sheet、其它模块、userform等所有控件都可以调用。定义方法是在模块的开头输入Option Explicit,声明你需要定义的变量,比如定义一个Variant变量K:
Option Explicit
Public K As Variant
注意一个VB工程中可添加多个模块,但是在每个模块中声明的全局变量名不
一、从作用域看:
全局变量:其作用范围是“整个工程”,只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量
静态全局变量:使用 static 关键字修饰,也具有全局作用功能,和全局变量区别在于如果该程序包含多个文件,其作用范围仅在定义的那个文件,不能作用于其它文件,这样即使两个不同的源文件都定义了相同名字的静态全局...
我试图在project中使用Python的执行程序来执行嵌入式Python代码.我遇到的问题是,在exec语句中的模块级别创建的变量不能从同一模块中定义的函数访问.假设你有以下Python程序:x = 5def foo():print xfoo()如果将上述四行放在一个文件中并运行它,那么它将无所谓.但是,如果您尝试从exec语句中运行相同的代码,它将无法正常工作.这是我们以前的程序,在一个exe...
批量打印代码 声明变量,就是像制造了一个盒子,这个盒子有他的名称,叫做变量名,有他的外观,叫做数据类型,盒子装有东西,叫做变量的值。这个盒子放在哪个位置叫做作用域,比如 Public,Private,Static 。声明变量时,通常使用 Dim 语句。 声明语句可以置于创建过程中以创建过程级变量。 也可以置于声明部分的模块顶部,以创建模块级变量。下面的示例创建变量并指定 String 数据类型。D...
我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!昨天我们讲了变量,那到底VBA中的变量根据其作用范围不同有可以分为哪些呢?都是如何声明其数据类型的?变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值。变量声明是指在VBA代码中使用变量之前,声明变量的数据类型。声明数据类型后,可以在计算机内...
e2=Application.Match("品质", Worksheets("Petskill").Range("2:2"), 0)
e222 = Application.Match("品质", Worksheets("Petskill").Range("2:2"), 0)
原因是e2再模块里被 public e2 这样声明了
作为一个人. 我们知道人具有自己的属性和动作. 比如头发是黑色的. 眼晴是黑的. 牙可能也是黑的. 然后我们也会有做一些动作 , 比如放声歌唱, 或者吃一些东西.
对像就是具有自己属性和可以执行一些动作的事物.
放在编程中, 对像就是 一些属性和函数的集合体. 比如人这个对像
person
funciton eat()
function sing()
在做VLC开发的时候,想使用一个模块访问另外一个模块的数据, 比如在网络模块得到了一些数据,想在其他模块得到这些数据进行处理,这时候就需要两个模块共享一些变量。 查看VLC的源码,发现VLC专门有variables.h和variables.c是用来处理变量的。它提供了一些方法可以创建VLC变量、设置VLC变量、改变、销毁VLC变量等。 当我们要产生一个VLC变量的时候,我...
1.c++虚函数原理
作用:C++中的虚函数的作用主要时实现了多态的机制。当基类中的成员函数定义了虚函数,其子类可以重新改写该函数。也即是允许派生类调用父类的同名函数而实现不同的功能,也叫动态联编。在主函数调用时,只需要定义一个基类指针就可以进行派生类的分别操作。底层原理:虚函数表+虚函数表指针。每一个类都会对应一个虚函数表,一个存放虚函数地址的虚函数表,并创建虚函数指针(vptr)来指向表。
2.虚函数指针的初始化过程
虚函数表的创建和虚函数指针的初始化都是在构造函数中进行的。当编译器发现基类当中有
这个声明的生命周期也应该在sub内,有啥必要非在sub结尾前关闭掉?多此一举把
那这么推论
如果变量,数组,字典只是过程级的,过程执行/调用 结束了就释放了吧,有必要额外这么释放吗?
过程外反正是查不到的
变量的清空
a="" ?
大家好,今天继续讲解类和类模块应用,今日讲解第2讲内容:变量的作用范围(域)的详细解读。当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码中你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围了。变量因为声明的位置和方式不同,有着不同的作用范围,或者叫作用域。作用域是指变量在多大范围内能被代码识...
目录变量的生成变量的删除变量的更改
变量的生成
要生成一个新变量,我们就用gen(或者g),很明显就是generate的意思,gen(或g)后跟要生成新变量的名字(注意名字不能以数字开头),然后跟新变量生成的等价条件(可以加判断条件之类的,我们后面再讲),如果后面没有跟其他等价条件,则生成一个变量,变量里没有值。生成一个常量值,像我们之前举过的例子:
gen x1 = 0
生成一个变量x1,x1的值为0。
生成一个变量,值等于另外一个变量的值,如:
gen x2 = hour
这里我们生成了一个变量x2