📜  VBA Excel 中的变量和数据类型

📅  最后修改于: 2022-05-13 01:56:14.479000             🧑  作者: Mango

VBA Excel 中的变量和数据类型

在计算机系统中,几乎每个程序都使用变量和数据类型来存储和表示数据。同样,Excel VBA 也有变量和数据类型来存储和表示数据及其类型。在本文中,我们将了解 VBA 变量、它们的范围、数据类型等等。

VBA 变量

VBA(Visual Basic for Application)变量类似于其他编程语言变量,它们充当用于存储数据(整数、字符串、浮点数等)的容器。我们可以在多个地方使用代码中的变量并执行程序。

在 VBA 中定义变量

VBA 允许以两种方式定义变量:

  1. 隐式——在 VBA 中,我们可以使用 assignment(=)运算符隐式声明变量。在 VBA 中隐式声明的所有变量都是“ Variant ”类型。变体类型变量比普通变量需要更多的内存空间。示例:标签=“gfg”
  2. 显式地——显式地,我们可以使用“ Dim ”关键字来声明变量。显式变量还减少了命名冲突和拼写错误。示例: Num 作为密码

VBA 变量的语法

VBA 变量规则:

  1. 其长度应小于 255 个字符。
  2. 字符之间不允许有空格。
  3. 它不应该以整数开头。
  4. 字符之间不允许使用句点(.)。
AllowedNot Allowed
gfg_articlegfg.article
dataStructureCourse11CourseDataStructure
geekforgeeksgeeks for geeks

例子:

在这个例子中,我们将在 excel 中定义一个宏,我们将在该宏中输入代码并执行代码以了解 VBA 变量在 excel 中的工作。

第 1 步:首先,我们将在 Excel 工具栏中提供开发人员选项。为此,请转到任何工具(在这里,我们选择绘图),然后右键单击它并选择“自定义功能区..”选项。

自定义功能区

excel将打开弹出选项,我们需要检查开发人员复选框并单击确定。这将启用开发人员选项并使其在 Excel 顶部工具栏中可用。

开发者选项

第 2 步:在这一步中,我们将在 Visual Basic 编辑器中声明我们的变量。为此,请转到Developer > Visual Basic Editor

打开-VBA-编辑器

这将打开 Visual Basic 代码编辑器,我们需要在其中编写 VBA 脚本。

可视化基本编辑器

第 3 步:在这一步中,我们将编写 VBA 脚本。为此,我们将双击左侧窗格中 Microsoft excel 对象下的 ThisWorkbook,然后打开编辑器并向其中写入以下代码。

在上面,我们可以看到,如果不使用变量,我们要对字符串“ Data Structure Course ”进行更改并在每个字符串之前添加“ GeeksForGeeks ”,我们需要在三个不同的地方重复它。但是如果我们使用一个变量,那么我们只需要在我们声明变量的地方更改它。这将减少工作量。

我们将在 VBS 脚本编辑器中编写此代码并执行它。这将在代码中定义的单元格中打印输出字符串。

VBA 脚本

有一次,我们使用 Run 按钮执行它,我们将得到以下输出。

输出

VBA 变量的范围

变量的范围是在我们声明变量时确定的。在 VBA 中,作用域告诉我们可以在哪里使用变量。变量的作用域分为三个级别:

1. 程序级别:这些是可以在它们定义的程序中使用的变量。过程是子或函数

示例:在此示例中,我们将看到 VBA 变量范围的过程级别。为此,打开 VBA 编辑器并将以下代码写入其中。

程序级范围

一次,我们单击 VBA 编辑器中的运行按钮,我们将输出。文本将打印到单元格 A1。

最终输出

2、模块级:也称为私有模块级。它可以被同一模块中的任何过程使用。这些变量必须在模块顶部的所有过程之外声明。

示例:在此示例中,我们将查找变量的模块范围。为此,我们将创建一个新模块。我们将打开 VBA 编辑器,在左侧窗格(项目资源管理器)中,我们将右键单击并创建一个新模块,将以下代码添加到其中。

模块级

在此之后,我们只需要单击“运行”按钮。此外,当我们运行它时,它会询问要运行哪些宏,我们需要选择“ Macros In: ”。

宏输入

一旦我们运行它,我们将在单元格 A1 和 A2 中获得输出。

最终输出

3.公共模块级别:顾名思义,公共模块变量范围是在项目级别。如果我们将任何变量定义为公共模块变量,则它可以在该项目内的任何模块中使用。

示例:在此示例中,我们将添加两个不同的模块并在一个模块内定义一个公共 VBA 变量,并尝试从两个模块访问它。下面是 module1 和 module2 的代码。

模块1

模块2

一次,完成两个模块。只需单击“运行”按钮。输出将打印在单元格 A1 和 A2 中,

点击运行按钮

图 12 – 输出

变量的生命周期

变量可以在其范围内保留其值。变量的生命周期表明变量可以保留其值的时间。为了扩展范围等,变量的生命周期,我们需要用static关键字声明变量。如果我们使用 static 关键字声明变量,即使在所有宏执行完成后,变量仍将保留其值。

示例:在此示例中,我们将使用 static 关键字定义一个变量并多次执行它以检查它是否保留该值。我们需要将以下代码写入 VBA 编辑器。

在此之后,我们需要执行它。每次我们单击运行按钮时,MessageBox 都会返回更新后的值。 (1, 2, 3…..),因此它将扩展其范围和生命周期。

最终输出

VBA 数据类型

在计算机中,我们使用数据类型来区分整数和字符串等。我们将分配给变量的数据类型决定了应该存储在该变量中的内容,即需要存储在变量中的值是取决于变量的数据类型。在 VBA 中,数据类型分为两大类:

1、数值数据类型:数值数据类型用于进行加法、减法等数学运算,用于处理各种表示格式的数字。在数值数据类型中,整数类型仅表示整数(零、正数和负数)。非整数类型表示整数和小数部分。

Data TypesMemory SizeValue Range
Byte1 2yte0 to 255
Integer2 bytes-32,768 to 32,767
Long4 bytes-2,147,483,648 to 2,147,483,648
Single4 bytesNegative Values (-3.402823E+38 to -1.401298E-45) & Positive Values (1.401298E-45 to 3.402823E+38)
Double8 bytesNegative Values (-1.79769313486232e+308 to -4.94065645841247E-324) & Positive Values (4.94065645841247E-324 to 1.79769313486232e+308)
Currency8 bytes-922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal12 bytesNo Decimal Places (+/- 79,228,162,514,264,337,593,543,950,335) & Up to 28 Decimal Places (+/- 7.9228162514264337593543950335)

2. 非数值数据类型:非数值数据类型不被算术运算运算符。它们由文本、数据等组成。

Data TypesMemory SizeValue Range
String(fixed size/length)Equivalent to String’s length(in bytes)1 to 65,400 characters
String(variable length)String’s length + 10 bytes0 to 2 billion characters
Boolean2 bytesTrue/False
Object4 bytesEmbedded object
Data8 bytesJanuary 1, 100 to December 31, 9999
Variant(numeric)16 bytesAny value
Variant (text)Text’s length + 22 bytes0 to 2 billion characters

注意:如果我们不声明任何数据类型,VBA 将默认将变量作为变体类型。

例子:

在这个例子中,我们将编写一个简单的脚本来创建一个按钮,单击该按钮会发生一个事件,我们将获得输出。

第 1 步:首先,我们将在我们的 Excel 工作表中插入一个命令按钮。为此,请转到Developer > Insert > Command Button并单击它。

单击命令按钮

图 14 – 命令按钮

之后,我们可以在我们想要的工作表中的任何位置插入按钮。我们只需要将它拖到 Excel 工作表上。

命令按钮视图

第 2 步:在这一步中,我们将为按钮编写脚本。为此,只需双击按钮。这将打开 VBA 脚本编辑器,我们将在其中编写以下代码。在下面的代码中,我们将 GFG 和 course 定义为 String 数据类型,将 res 定义为 Integer 数据类型。

按钮的 VBA 脚本

第 3 步:在这一步中,我们将保存我们的脚本。为此,单击 VBA 编辑器中的保存按钮。

保存-VBA-按钮-脚本

excel 将弹出一个窗口,要求保存宏。我们需要单击“是”,它将保存它。

保存宏到工作簿

第 4 步:现在,我们将执行我们的脚本。为此,我们需要单击命令按钮。但在点击它之前,我们需要退出设计模式。要退出任何模式,只需单击一次模式。

脱离设计模式

完成此操作后,我们将通过单击commandButton1来执行脚本。它将给出以下输出。

最终输出

注意:如果我们在excel的任何单元格中写“01”,它会默认打印“1”。这就是为什么在输出中,在单元格 b1 中只打印“1”。