Excel VBA教程(六):Excel VBA语言基础-变量
在本文中,我们将了解 Excel VBA 语言基础知识中变量的内容。
这是上一篇文章的延续。
Excel VBA教程(五):Excel文件扩展名、VBE、字体设置
3. Excel VBA语言基础
3.1.多变的
检查变量声明和绑定方法。
3.1.1.变量声明
使用以下语法声明变量:
'변수 선언 문법 Dim <변수명> [As Type]
在 Visual Basic 中,您可以在不声明变量的情况下使用它,即使声明了它,您也可以不指定类型。
Dim t, x
如上,在声明t和x变量时不指定类型是没有问题的。
但是,为了减少错误或错误的可能性并使代码更易于阅读,建议遵守以下内容。
- 必须声明和使用变量。 (推荐显式选项)
- 还必须指定类型。
- 将类型的缩写用作前缀的匈牙利表示法应用于变量名称,以便可以轻松识别类型。
'문자열 Title Dim sTitle As String
- 变量名、过程名、函数名等名称使用韩文完全没有问题,如果难以决定变量名或需要提高可读性,请积极使用韩文名称。
主要使用的类型和前缀如下。
字首 | 类型 | 长度 | 参考 |
---|---|---|---|
秒 | 细绳 | 10 + 字符串长度 | 可表达约20亿个字符 |
我 | 整数 | 2个字节 | 阈值:-32,768 至 32,767 |
升 | 长 | 4字节 | 限制:-2,147,483,648 至 2,147,483,647 |
b | 布尔值 | 2个字节 | 真假 |
o | 目的 | 工作簿、工作表、范围和集合等对象 |
使用上述前缀声明变量的示例如下。
Dim s단어 As String Dim b단어발견 As Boolean Dim oTargetBook As Workbook Dim oTargetSht As Worksheet
3.1.2.变量早期绑定、后期绑定
在声明时确定变量类型的方法称为早期绑定,在执行时确定变量类型的方法称为后期绑定。下表总结了两种方法的概念、示例、建议、优缺点。
分配 | 提前绑定 | 后期绑定 |
---|---|---|
概念 | 如何在声明变量时指定类型 如果不是内置类型,则添加对该类型的引用并指定类型 | 如何在执行时指定类型 |
例子 | 暗剑如弦 将 oRecordSet 变暗为 ADO.RecordSet | 暗剑 Dim oRecordSet 作为对象 |
建议 | 大多数情况下推荐 | 仅在绝对必要时使用 (仅限对象类型) |
优点 | 写代码时自动补全,动态帮助支持(方便) 由于类型是在编译时确定的,因此有利于性能。 | 如果运行的计算机中没有引用库,则只有后期绑定的代码部分不执行。 |
坏处 | 如果运行的电脑中没有引用库,则整体不会运行 | 写代码时不支持自动补全(不方便) 性能相对较差,因为类型是在执行时确定并动态绑定的。 |
让我们看一下每种方法的示例代码。这是一个简单的代码,用于使用 Outlook 创建电子邮件的收件人、主题和内容,并将其显示在屏幕上。
早期绑定方式的示例代码如下。
Sub SendOLMail_EarlyBound() ' declare variables for the Application and Mailitem objects Dim oAPP As Outlook.Application Dim oItem As Outlook.MailItem ' instantiate the Application Set oAPP = New Outlook.Application ' create a new email Set oItem = oAPP.CreateItem(olMailItem) ' set basic properties and display the email With oItem .To = "foo@bar.com" .Subject = "this is a test" .Body = "nothing to see here" .Display End With End Sub
变量oApp和oItem在声明时分别指定为Outlook.Application类型和Outlook.MailItem类型。在这种情况下,您需要添加对 Outlook 库的引用,如下所示。
打开“VBE > Tools > References”菜单,勾选“Available References”中的“Microsoft Outlook 16.0 Object Library”并单击OK按钮。
当您再次打开参考菜单时,它应该如下所示:
如果将保存此VBA代码的宏文件(.xlsm或.xlsb)复制到未安装Outlook 16的PC上运行,会出现找不到类型的错误。
后期绑定方法的示例代码如下。
Sub SendOLMail_LateBound() Dim oAPP As Object Dim oItem As Object ' need to declare this constant as it has no meaning without ' the reference set to the Outlook library Const olMailItem As Long = 0 ' instantiate the Application - cannot use New without a reference ' so we must use CreateObject Set oAPP = CreateObject("Outlook.Application") '이후 코드는 동일 ' create a new email Set oItem = oAPP.CreateItem(olMailItem) ' set basic properties and display the email With oItem .To = "foo@bar.com" .Subject = "this is a test" .Body = "nothing to see here" .Display End With End Sub
oApp和oItem变量在声明时指定为Object类型,对象创建方式不同。
在第 10 行使用以下代码创建一个对象。
设置 oAPP = CreateObject(“Outlook.Application”)
有关 CreateObject 函数的详细说明,请参阅以下 URL。
上面 URL 的一些摘录被留下了。
句法
创建对象(类,[ 服务器名 ])
这 创建对象 函数语法有以下部分:
部分 | 描述 |
班级 | 必需的; 变体 (细绳).要创建的对象的应用程序名称和类。 |
服务器名称 | 选修的; 变体 (细绳).将在其中创建对象的网络服务器的名称。如果 servername 是一个空字符串(“”),则使用本地机器。 |
班上 争论 使用语法 appname.objecttype 并具有以下部分:
部分 | 描述 |
应用名称 | 必需的; 变体 (细绳).提供对象的应用程序的名称。 |
对象类型 | 必需的; 变体 (细绳).类型或 班级 要创建的对象。 |
将保存了该VBA代码的宏文件(.xlsm或.xlsb)复制到未安装Outlook 16的PC上运行时,与Early binding一样,会出现找不到类型的错误。不同的是,在Early binding方法中,如果没有引用库,所有代码都不会从头开始执行,而在Late binding方法中,其他代码运行,只有包括CreateObject在内的代码(过程,函数)不执行。
到目前为止,我们已经了解了变量声明和绑定方法。接下来,我将解释 VBA 语言的语法。
<<相关文章一览>>
- 开始 Excel VBA 课程。 (讲座预告,壮举。为什么我们推荐 Excel VBA)
- Excel VBA课程(一):Excel VBA概述
- Excel VBA教程(二):Excel VBA基础
- Excel VBA教程(三):Excel对象模型
- Excel VBA教程(四):使用Excel对象模型
- Excel VBA教程(五):Excel文件扩展名、VBE、字体设置
- Excel VBA教程(六):Excel VBA语言基础-变量
- Excel VBA教程(七):Excel VBA语言基础——语法
- Excel VBA教程(八):Excel VBA语言基础——数据类型、数据结构
- Excel VBA教程(九):Excel VBA How-To
- Excel VBA教程(十):与Excel VBA一起开发和使用的工具
- Excel VBA 课程的完整目录