欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【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

【VBA学习笔记】对于变量声明级别的理解

运行结果:

【VBA学习笔记】对于变量声明级别的理解


(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

【VBA学习笔记】对于变量声明级别的理解

运行结果:

【VBA学习笔记】对于变量声明级别的理解

 

(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

运行结果语法出错:

【VBA学习笔记】对于变量声明级别的理解

原因就在于:

【VBA学习笔记】对于变量声明级别的理解

(4)在下面的示例中,字符串变量strMsg可被定义在此模块中的任何过程使用:

Private msg As String '声明变量msg的类型为字符串,并在sub过程一、二中通用
Sub 过程一()
msg = "你最帅" '过程一中声明变量内容为“你最帅”
End Sub

Sub 过程二()
  MsgBox msg '过程二中将过程一中声明内容的变量msg输出为消息框
End Sub

【VBA学习笔记】对于变量声明级别的理解【VBA学习笔记】对于变量声明级别的理解

对比结果:

【VBA学习笔记】对于变量声明级别的理解

 

综上所述,变量的声明级别随着适用的关键字的不同而不相同,

关键字Dim只适用于某个模块内部过程中的局部声明,离开这个过程,这个被声明的变量将不再适用;

关键字Private适用于整个模块级别的变量声明,例如上面的模块一(在该模块中的两个过程一和二中,始终默认变量msg为字符串类型),而离开了模块一,这个被声明的变量也同样不再适用。

当然,变量的声明级别还有全局声明(公共模块级别前面加上Public关键字,在整个工程中都是有效的)