精华内容
下载资源
问答
  • 上节我们讲了变量,那到底变量声明是干啥呢?变量是一个指定内存位置,用于保存脚本执行过程中可以更改值。变量声明是指在VBA代码中...在VBA中如果要强制声明变量可以通过以下方式:到工具、选项、编辑器下面勾...

    上节我们讲了变量,那到底变量声明是干啥呢?

    变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值。变量声明是指在VBA代码中使用变量之前,声明变量的数据类型。声明数据类型后,可以在计算机内建立一个指定的存储位置,这样在运行代码时程序就会很快,内存利用效率很高,否则,计算机还要耗用很大的内存来判断其数值类型,运行会比较慢。

    在VBA中如果要强制声明变量可以通过以下方式:

    08cc253a8800aa456d1d67b166418a98.png
    7cb5773de94c11136c29eeb616881f55.png

    到工具、选项、编辑器下面勾选要求变量声明,勾选后代码窗口的顶头就会显示:Option Explicit

    60714251e2494c40a3cf449812ed0ed8.png

    或者我们不用去选项里勾选,直接在输入代码时最顶头输入Option Explicit也可以强制声明变量。

    如果强制声明变量后,在VBA代码中输入变量却未声明时,系统就会弹框显示:

    2e6aff784ea8d1694af6f5bb931c7a6e.png

    理解了上面的内容以后我们就来具体的学学在VBA代码中到底怎么声明变量。

    根据使用变量的范围不同,声明的方式也有所不同。

    第一种:过程级变量

    过程级变量只在变量所在的过程中有效。

    声明代码:

    Dim 变量名 As 数值类型

    举例:

    Sub test()

    Dim M1 As Integer ' 声明变量M1为整型

    M1 = 100

    Range("a1").Value = M1 ' 把M1的值赋给A1单元格

    End Sub

    12469e38722da62e3c0381dbb3c18976.png

    当我们再写一段代码,直接使用M1时就会出现如上的提醒。

    第二种:模块级变量

    在同一个模块内通用的变量。

    声明代码:

    Dim 变量名 As 数值类型

    Private 变量名 As 数值类型

    c79f0029daee1e864333cd9d0a1ff711.png

    Option Explicit

    Dim m1 As Integer

    Private m2 As Integer

    '过程1:

    Sub test1()

    m1 = 100

    m2 = 200

    Range("a1").Value = m1 + m2

    End Sub

    '过程2:

    Sub test2()

    m1 = 100

    m2 = 200

    Range("a1").Value = m2 - m1

    End Sub

    与过程级变量声明的不同方式在于,写过程前先声明。

    第三种:全局变量

    在该工程内通用的变量。

    声明代码:

    Public 变量名 As 数值类型

    比如:我们在模块3中声明一个全局变量X1

    afcc9cfcf07130e75b6ae7ff5c64e46f.png

    然后我们到模块2中试试引用这个变量,

    7433e162d2200b86e5224b185fdb3fe0.png

    完全可以引用。

    这节的分享就到这里,主要是分享了变量的三种声明方式,百说不如一练,动手试试才有体会。

    转自: 米宏Office

    展开全文
  • 我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。...变量声明是指在VBA代码使用变量之前,声明变量的数据类型。声明数据类型后,可以在计算机内...

    我的目标:让中国的大学生走出校门的那一刻就已经具备这些Office技能,让职场人士能高效使用Office为其服务。支持鹏哥,也为自己加油!

    昨天我们讲了变量,那到底VBA中的变量根据其作用范围不同有可以分为哪些呢?都是如何声明其数据类型的?

    变量是一个指定的内存位置,用于保存脚本执行过程中可以更改的值。变量声明是指在VBA代码中使用变量之前,声明变量的数据类型。声明数据类型后,可以在计算机内建立一个指定的存储位置,这样在运行代码时程序就会很快,内存利用效率很高,否则,计算机还要耗用很大的内存来判断其数值类型,运行会比较慢。

    在VBA中如果要强制声明变量可以通过以下方式:

    9ad4121efe2fc46f7ea4ba264b0fd928.png

    9c375c27fb8af74a24fde12d79560625.png

    到工具、选项、编辑器下面勾选要求变量声明,勾选后代码窗口的顶头就会显示:Option Explicit

    fea9c77c52e98ba9284ae1d25f84d6d2.png

    或者我们不用去选项里勾选,直接在输入代码时最顶头输入Option Explicit也可以强制声明变量。

    如果强制声明变量后,在VBA代码中输入变量却未声明时,系统就会弹框显示:

    a9b8a3c2b74790d02ca2c934650e08a7.png

    理解了上面的内容以后我们就来具体的学学在VBA代码中到底怎么声明变量。

    根据使用变量的范围不同,声明的方式也有所不同。

    第一种:过程级变量

    过程级变量只在变量所在的过程中有效。

    声明代码:

    Dim 变量名 As 数值类型

    举例:

    Sub test()Dim M1 As Integer ' 声明变量M1为整型M1 = 100Range("a1").Value = M1 ' 把M1的值赋给A1单元格End Sub

    aa2efd315c8f2b15a48f094ce9aad235.png

    当我们再写一段代码,直接使用M1时就会出现如上的提醒,因为两个过程里的M1是独立的。

    第二种:模块级变量

    在同一个模块内通用的变量。

    声明代码:

    Dim 变量名 As 数值类型

    Private 变量名 As 数值类型

    247200644a34da71181971c23b78f480.png

    Option ExplicitDim m1 As IntegerPrivate m2 As Integer'过程1:Sub test1()m1 = 100m2 = 200Range("a1").Value = m1 + m2End Sub'过程2:Sub test2()m1 = 100m2 = 200Range("a1").Value = m2 - m1End Sub

    与过程级变量声明的不同方式在于,写过程前先声明。

    第三种:全局变量

    在该工程内通用的变量。

    声明代码:

    Public 变量名 As 数值类型

    比如:我们在模块3中声明一个全局变量X1

    2c88fdc9650f6e8edca3f5845785b819.png

    然后我们到模块2中试试引用这个变量,

    08e0809b2939315d0662afb63f5a5506.png

    完全可以引用。

    今天主要是分享了变量根据作用范围的不同分为三种类型极其声明方式,动手试试才有体会。

    本节的分享就到这里,鹏哥祝大家每天都有进步。

    从基础操作到VBA,

    两杯咖啡的钱,

    换取一份如此详细的Excel视频资料,

    你还在犹豫?

    欲购从速,联系微信号:527240310

    每天进步一点,每天提升一点!

    展开全文
  • 当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围...

    a700a5b61f978341c12cffd3bffc072f.png

    大家好,今天继续讲解类和类模块应用,今日讲解第2讲内容:变量的作用范围(域)的详细解读。当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码中你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围了。

    变量因为声明的位置和方式不同,有着不同的作用范围,或者叫作用域。作用域是指变量在多大范围内能被代码识别。根据作用的范围不同,可以划分为过程级、模块级和全局变量。

    一 过程级变量 在过程中声明,过程指的是一个Sub或Function,也包括后面提到的属性过程。通常用Dim或Static进行声明。

    1 Dim声明的变量,只在该过程执行时存在,过程结束,变量的值也就消失了。

    2 Static声明的变量称为静态变量,这个值在整个程序运行期间都存在。

    理解其中的含义:

    ① [Dim]是动态变量,过程一旦结束,该变量所占有的内存就会被系统回收,而变量所储存的数据就会被破坏。

    ② [Static]是静态变量,这意味着在过程结束后这个变量所占有的内存不会被回收,数据当然也不会被破坏了,这样当你下次再调用该过程的时候,数据就依然存在。

    二 模块级变量 对命名变量的整个模块所有过程都有效,对其它模块不可用。可以在模块顶部声明。

    声明模块级变量用Private关键字和直接使用Dim没有区别。但推荐使用Private进行声明,这样可以与后面的全局变量区分开来。

    三 全局变量 是对整个VBA工程的所有过程都有效的变量,使用Public关键字在标准模块的顶部来声明。

    理解其中的含义:

    ① [Public]是公共变量,如果在一个模块当中使用,那么整个应用程序都能使用它所定义的变量,如果在类中使用,那么它就是一个共有属性。

    ② [Private]是私有变量,如果在一个模块中使用,那么只有这个模块才能访问到它所定义的变量,如果在类中使用,那么它就是一个私有属性。

    本讲用到的测试代码:

    Sub mynzclass2_1() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    Sub mynzclass2_2() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    Sub mynzclass2_3() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    代码截图:在两个模块中我分别加入了过程Sub mynzclass2_1()Sub mynzclass2_2()Sub mynzclass2_3();同时在模块1的开始定义了全局变量VVV和模块变量YYY

    47c9580f2548deaec862c3da52da3bf4.png

    ed28301adc81b0cbfe8461aac4ff91e1.png

    这讲的内容比较有意思,下面我们看代码的运行:在工作表中,我分别给出了执行上述三个过程的按钮,我们每个按钮都执行一次看看结果:

    cf5cd70ab3bffe34119b6866d4ee053a.png

    0add8e359d38c979cc4e9ec6abe3c4e0.png

    0adb0a854eb68013622a600af8109ec6.png

    此时我们再次点击一下第一个按钮看看执行结果:

    fe50cbac47d2376240195fec0a732f33.png

    我们仅对最后一次的结果进行分析:在最后一次点击按钮时,K是过程变量为1,ZZZ的内存中存在的

    已经存在数值为1再加上1为2;VVV是全局变量这是第四次执行所以是4,yyy 是模块级别变量,由于在模块1中是执行的第三次操作,所以是3。

    今日内容回向:

    1 DIM StaticPublicPrivate 含义是否理解?

    2 上面再次点击第三个按钮的结果,请分析。

    46e67891801d4d8518d648861af8d364.png
    展开全文
  • 当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围...

    大家好,今天继续讲解类和类模块应用,今日讲解第2讲内容:变量的作用范围(域)的详细解读。当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码中你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围了。

    变量因为声明的位置和方式不同,有着不同的作用范围,或者叫作用域。作用域是指变量在多大范围内能被代码识别。根据作用的范围不同,可以划分为过程级、模块级和全局变量。

    一 过程级变量 在过程中声明,过程指的是一个Sub或Function,也包括后面提到的属性过程。通常用Dim或Static进行声明。

    1 Dim声明的变量,只在该过程执行时存在,过程结束,变量的值也就消失了。

    2 Static声明的变量称为静态变量,这个值在整个程序运行期间都存在。

    理解其中的含义:

    ① [Dim]是动态变量,过程一旦结束,该变量所占有的内存就会被系统回收,而变量所储存的数据就会被破坏。

    ② [Static]是静态变量,这意味着在过程结束后这个变量所占有的内存不会被回收,数据当然也不会被破坏了,这样当你下次再调用该过程的时候,数据就依然存在。

    二 模块级变量 对命名变量的整个模块所有过程都有效,对其它模块不可用。可以在模块顶部声明。

    声明模块级变量用Private关键字和直接使用Dim没有区别。但推荐使用Private进行声明,这样可以与后面的全局变量区分开来。

    三 全局变量 是对整个VBA工程的所有过程都有效的变量,使用Public关键字在标准模块的顶部来声明。

    理解其中的含义:

    ① [Public]是公共变量,如果在一个模块当中使用,那么整个应用程序都能使用它所定义的变量,如果在类中使用,那么它就是一个共有属性。

    ② [Private]是私有变量,如果在一个模块中使用,那么只有这个模块才能访问到它所定义的变量,如果在类中使用,那么它就是一个私有属性。

    本讲用到的测试代码:

    Sub mynzclass2_1() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    Sub mynzclass2_2() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    Sub mynzclass2_3() '第2讲变量的作用范围

    Dim K As Integer

    Static ZZZ As Integer

    K = K + 1

    ZZZ = ZZZ + 1

    VVV = VVV + 1

    YYY = YYY + 1

    MsgBox "过程变量K值为: " & K & Chr(10) & "过程级别静态变量ZZZ值为:" & ZZZ & Chr(10) & "全局变量VVV值为:" & VVV & Chr(10) & "模块变量YYY值为:" & YYY

    End Sub

    代码截图:在两个模块中我分别加入了过程Sub mynzclass2_1()Sub mynzclass2_2()Sub mynzclass2_3();同时在模块1的开始定义了全局变量VVV和模块变量YYY

    a361ef17765fd171e049a14fed117ca5.png
    91cdccfe0825c02bf46c41a54b5c2988.png

    这讲的内容比较有意思,下面我们看代码的运行:在工作表中,我分别给出了执行上述三个过程的按钮,我们每个按钮都执行一次看看结果:

    dd1147ee0cafcbc1f16867a59f710a43.png
    20bed2d0d2c1a2f1d45772125a0564d8.png
    380945a35843e40b56780a0efc3e44f5.png

    此时我们再次点击一下第一个按钮看看执行结果:

    2a662c67d957529f00a2930aee77fa57.png

    我们仅对最后一次的结果进行分析:在最后一次点击按钮时,K是过程变量为1,ZZZ的内存中存在的

    已经存在数值为1再加上1为2;VVV是全局变量这是第四次执行所以是4,yyy 是模块级别变量,由于在模块1中是执行的第三次操作,所以是3。

    今日内容回向:

    1 DIM StaticPublicPrivate 含义是否理解?

    2 上面再次点击第三个按钮的结果,请分析。

    cf2fbe1c177812b27d7bc9a2517f71cf.png
    展开全文
  • 当你深入地学习VBA后,会发现VBA涉及到的内容非常之多,我们这讲讲解的是变量,在简单的VBA代码你或许可以不必考虑变量的作用范围,但如果你做一个大型的程序,涉及到各个知识点的时候,必须要考虑变量的作用范围...
  • 作用域不同,存放位置,声明的方式不同 举例1 结果只显示工程级,模块级,模块级变量,过程级变量只能在过程里引用 举例2 新建模块2,复制以上代码,运行主程序过程,结果只显示工程级变量,说明模块级变量不...
  • VBA中的变量区分对象变量与非对象变量...1 非对象变量的声明和赋值对于非对象变量,一般使用关键字let来赋值:Sub 非对象变量赋值() Dim i As Integer Let i = 23 'Let可省略 i = 45 '省略Let形式的非对象变量赋值 ...
  • VBA中,可以通过Dim语句定义变量,在程序运行过程中,定义的变量可以随时赋值或读取。 目录 步骤1 步骤2 步骤3 步骤4 说明 声明变量 变量命名规则 VBA数据类型 数据类型分类及表示方式 (1)...
  • 变量生命周期类型(Extent Name) 变量声明方式(Variable Definition Form) 变量生命周期 (Variable Lifespan) Program Extent Defined by the VBA specification or by the host application. The entire ...
  • VBA中关于dim简单总结

    万次阅读 2017-08-31 16:25:21
    楼主是个初学者,在应用vba时遇到了dim方面问题,查了很多资料后想把关于dim这点儿知识简单整理出来 首先,从我遇到问题作为切入点吧, (不得不承认...楼主想当然认为dim同类型多变量声明方式为 dim 变...
  • VBA Dim含义

    千次阅读 2018-06-07 17:17:00
    楼主是个初学者,在应用vba时遇到了dim方面问题,查了很多资料后想把关于dim这点儿知识简单整理出来 首先,从我遇到问题作为切入点吧, (不得不承认我...楼主想当然认为dim同类型多变量声明方式为dim 变...
  • 概述VBA数组是用于存储一组相同类型的变量的结构,数组的每个元素都可以通过一个索引号进行访问。声明数组例如,假设一个团队有20名成员,你想要存储所有成员的名字,以便在VBA代码使用,可以声明20个变量来保存...
  • 浅谈VBA中使用数组处理工作表数据

    千次阅读 2018-02-28 12:55:53
    VBA中最经常涉及就是读写工作表中单元格,如果读写操作次数较多,或者涉及到单元格数量较多,往往会导致程序运行效率较低。这时经常用到解决方法就是使用数组保存数据,在内存中进行数据处理和加工,最后...
  • 通过前面十二节课程介绍,大家已经了解了VBA中的对象、属性、方法,Sub过程基本结构,代码调试方法,变量及其声明方式等等,有了这些知识储备,我们就可以正式进入代码部分了。观察一下我们做合并工作表以及...
  • 概述VBA数组是用于存储一组相同类型的变量的结构,数组的每个元素都可以通过一个索引号进行访问。声明数组例如,假设一个团队有20名成员,你想要存储所有成员的名字,以便在VBA代码使用,可以声明20个变量来保存...
  • VBA基础学习之1.8数组

    2020-03-07 22:04:09
    VBA基础学习之数组 我们都知道,一个变量...数组声明的方式与声明变量相同,只是数组变量的声明使用括号。 在下面的例子,括号里提到了数组的大小。参考以下示例 - 'Method 1 : Using Dim Dim arr1() 'Without Si...
  • Excel_VBA教程

    2014-09-22 11:36:34
    第六章 在VBA中重复操作 123 1.DO LOOPS: DO…WHILE和DO…UNTIL 123 2.观察过程执行 126 3.WHILE…WEND循环 127 4.FOR…NEXT 循环 128 5.FOR EACH…NEXT循环 129 7.提前跳出循环 130 8.循环嵌套 131 9.接下来… 131 ...
  • 大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解,什么是数组,如何定义数组,...二、如何定义数组 声名数组同声明其他变量的方式一样,唯一不同的是数组有大小,即有多少个元素,或者说变量,...
  • VBA数组(十四)

    2019-09-28 00:14:46
    我们都知道,一个变量是一个...数组声明的方式与声明变量相同,只是数组变量的声明使用括号。 在下面的例子,括号里提到了数组的大小。参考以下示例 - 'Method 1 : Using Dim Dim arr1() 'Without Size '...
  • VBA-语法-字典

    2019-08-20 10:19:34
    事实上,字典不是VBA内置类型,它是Windows脚本语言。 创建字典方式1 在VBE菜单,选择“工具-引用”,“浏览”,此时会打开Windows系统驱动目录(C:\Windows\System32),然后找到scrrun.dll,确定。添加...
  • VBA中 Createobject函数可以创建并返回一个对ActiveX对象引用 要创建 ActiveX 对象,只需将 CreateObject 返回对象赋给一个变量 '声明一个对象变量来存放该对象引用。Dim 变量 as Object采用后期绑定方式 ...
  • 自定义集合类型,类似于变量声明,只是要将Dim关键字和New collection关键字搭配起来使用,其语法描述如下:其中集合名的命名方式同于标准变量的命名 Dim 集合名 As New collection 对于已经定义的集合对象,可以...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    1.2EXCEL环境基于应用程序自动化优点................................................................................1 1.3录制简单宏....................................................................
  • ByVal和ByRef区别

    2015-12-30 16:47:04
    ByVal和ByRef区别在VBA过程,参数传递有两种方式:ByVal和ByRef。ByRef: 按地址传递,改变原先传递参数的变量的值。当没有任何声明的时候,采取此方式传递参数。ByRef常用在递归。ByVal: 按值传递,仅将变量...
  • 13.3.1 在VBA中声明对象变量 392 13.3.2 使用CreateObject()函数 394 13.3.3 使用GetObject()函数 394 13.4 应用自动化功能从Access运行其他应用程序 395 13.4.1 在Access中调用Word 396 13.4.2 在Access...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

vba中变量的声明方式