【VBA学习笔记】对于变量声明级别的理解
程序员文章站
2022-07-03 18:25:10
...
关键字Privateshe用于声明模块/窗体级别的变量,而Dim适用于模块中的局部变量的声明
(以改变图形颜色的代码段作为测试手段)
(1)关键字Dim声明局部变量:
Sub Dim声明局部变量()
Dim sld As Slide, shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
shp.Fill.ForeColor.RGB = vbRed
Next
Next
End Sub
运行结果:
(2)关键字Private声明模块级别的私有变量:
Private sld As Slide
Sub Private声明模块级别的私有变量()
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
shp.Fill.ForeColor.RGB = vbGreen
Next
Next
End Sub
运行结果:
(3)以下这样子操作将明显出错:
Sub Private的错误使用()
private dim sld as Slide,Private dim shp as Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
shp.Fill.ForeColor.RGB = vbBlue
Next
Next
End Sub
运行结果语法出错:
原因就在于:
(4)在下面的示例中,字符串变量strMsg可被定义在此模块中的任何过程使用:
Private msg As String '声明变量msg的类型为字符串,并在sub过程一、二中通用
Sub 过程一()
msg = "你最帅" '过程一中声明变量内容为“你最帅”
End Sub
Sub 过程二()
MsgBox msg '过程二中将过程一中声明内容的变量msg输出为消息框
End Sub
对比结果:
综上所述,变量的声明级别随着适用的关键字的不同而不相同,
关键字Dim只适用于某个模块内部过程中的局部声明,离开这个过程,这个被声明的变量将不再适用;
关键字Private适用于整个模块级别的变量声明,例如上面的模块一(在该模块中的两个过程一和二中,始终默认变量msg为字符串类型),而离开了模块一,这个被声明的变量也同样不再适用。
当然,变量的声明级别还有全局声明(公共模块级别前面加上Public关键字,在整个工程中都是有效的)