excel-vba开始使用excel-vba


备注

Microsoft Excel包含一种称为VBA的综合宏编程语言。此编程语言为您提供至少三个额外资源:

  1. 使用宏自动从代码中驱动Excel。在大多数情况下,用户可以通过在用户界面中操作Excel来执行的任何操作都可以通过在Excel VBA中编写代码来完成。
  2. 创建新的自定义工作表函数。
  3. 将Excel与其他应用程序(如Microsoft Word,PowerPoint,Internet Explorer,记事本等)进行交互。

VBA代表Visual Basic for Applications。它是古老的Visual Basic编程语言的自定义版本,自20世纪90年代中期以来一直支持Microsoft Excel的宏。

重要
请确保Excel的VBA代码中创建的任何实例或主题是具体的相关的使用VBA与Microsoft Excel。应拒绝提供VBA语言通用的任何建议主题或示例,以防止重复工作。

  • 主题示例:

    创建工作表对象并与之交互
    WorksheetFunction类和各自的方法
    使用xlDirection枚举来导航范围

  • 偏离主题的例子:

    如何创建'for each'循环
    MsgBox类以及如何显示消息
    在VBA中使用WinAPI


版本

VB

发布日期
VB6 1998-10-01
VB7 2001年6月6日
WIN32 1998-10-01
WIN64 2001年6月6日
苹果电脑 1998-10-01

高强

发布日期
16 2016年1月1日
15 2013-01-01
14 2010-01-01
12 2007-01-01
11 2003-01-01
10 2001-01-01
9 1999-01-01
8 1997-01-01
7 1995-01-01
1993-01-01
2 1987年1月1日

添加新的对象库参考

该过程描述了如何添加对象库引用,以及如何参考新库类对象声明新变量。

下面的示例显示如何将PowerPoint库添加到现有VB项目。可以看出,目前PowerPoint对象库不可用。

在此处输入图像描述

第1步 :选择菜单工具 - > 参考... 在此处输入图像描述

第2步 :选择要添加的参考。这个例子我们向下滚动找到“ Microsoft PowerPoint 14.0 Object Library ”,然后按“ OK ”。 在此处输入图像描述

注意:PowerPoint 14.0表示PC上安装了Office 2010版本。

第3步 :在VB编辑器中,一旦按下Ctrl + Space ,就会得到PowerPoint的自动完成选项。 在此处输入图像描述

选择PowerPoint 并按下后. ,出现另一个菜单,其中包含与PowerPoint对象库相关的所有对象选项。此示例显示如何选择PowerPoint的对象Application在此处输入图像描述

第4步 :现在用户可以使用PowerPoint对象库声明更多变量。

声明一个引用PowerPoint对象库的Presentation 对象的变量。 在此处输入图像描述

声明另一个引用PowerPoint对象库的Slide 对象的变量。 在此处输入图像描述

现在变量声明部分在下面的屏幕截图中看起来像,用户可以在他的代码中开始使用这些变量。 在此处输入图像描述

本教程的代码版本:

Option Explicit

Sub Export_toPPT()

Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dim ppSlide As PowerPoint.Slide

' here write down everything you want to do with the PowerPoint Class and objects


End Sub
 

声明变量

要在VBA中显式声明变量,请使用Dim 语句,后跟变量名称和类型。如果在未声明的情况下使用变量,或者未指定类型,则会为其指定类型Variant

在模块的第一行使用Option Explicit 语句强制在使用之前声明所有变量(请参阅始终使用“Option Explicit” )。

强烈建议始终使用Option Explicit 因为它有助于防止拼写错误/拼写错误并确保变量/对象保持其预期类型。

Option Explicit

Sub Example()
    Dim a As Integer
    a = 2
    Debug.Print a
    'Outputs: 2

    Dim b As Long
    b = a + 2
    Debug.Print b
    'Outputs: 4

    Dim c As String
    c = "Hello, world!"
    Debug.Print c
    'Outputs: Hello, world!
End Sub
 

可以使用逗号作为分隔符在一行上声明多个变量,但每个类型必须单独声明 ,否则它们将默认为Variant 类型。

Dim Str As String, IntOne, IntTwo As Integer, Lng As Long
Debug.Print TypeName(Str)    'Output: String
Debug.Print TypeName(IntOne) 'Output: Variant <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng)    'Output: Long
 

变量也可以使用数据类型字符后缀($%&!#@)声明,但是越来越不鼓励使用它们。

 Dim this$  'String
 Dim this%  'Integer
 Dim this&  'Long
 Dim this!  'Single
 Dim this#  'Double
 Dim this@  'Currency
 

其他声明变量的方法是:

  • Static 像: Static CounterVariable as Integer

当您使用Static语句而不是Dim语句时,声明的变量将在调用之间保留其值。

  • Public 喜欢: Public CounterVariable as Integer

公共变量可以在项目的任何过程中使用。如果在标准模块或类模块中声明了公共变量,那么它也可以在任何引用声明公共变量的项目的项目中使用。

  • PrivatePrivate CounterVariable as Integer

私有变量只能由同一模块中的过程使用。

来源和更多信息:

MSDN-声明变量

类型字符(Visual Basic)

Excel对象模型入门

本例旨在为初学者简单介绍Excel对象模型。


  1. 打开Visual Basic编辑器(VBE)
  2. 单击视图 - >立即窗口以打开立即窗口(或ctrl + G ):

在此处输入图像描述

  1. 您应该在VBE底部看到以下立即窗口:

在此处输入图像描述

此窗口允许您直接测试某些VBA代码。让我们开始吧,输入这个控制台:

?Worksheets. 
 

VBE具有智能感知,然后它应该打开工具提示,如下图所示:

在此处输入图像描述

在列表中选择.Count或直接输入.Cout 以获取:

?Worksheets.Count
 
  1. 然后按Enter键。计算表达式并返回1.这表示工作簿中当前存在的Worksheet数。问号( ? )是Debug.Print的别名。

工作表是一个对象,而Count是一个方法 。 Excel有几个对象( WorkbookWorksheetRangeChart ..),每个对象包含特定的方法和属性。您可以在Excel VBA参考中找到Object的完整列表。工作表对象在此处显示

此Excel VBA引用应成为有关Excel对象模型的主要信息源。

  1. 现在让我们尝试另一个表达式,键入(不带? 字符):
Worksheets.Add().Name = "StackOveflow"
 
  1. 按Enter键。这应该创建一个名为StackOverflow. 的新工作表StackOverflow.

在此处输入图像描述

要理解此表达式,您需要阅读上述Excel参考中的“添加”功能。你会发现以下内容:

Add:  Creates a new worksheet, chart, or macro sheet. 
The new worksheet becomes the active sheet. 
Return Value: An Object value that represents the new worksheet, chart,
 or macro sheet.
 

因此, Worksheets.Add() 创建一个新工作表并将其返回。工作表( 没有s )本身就是一个可以在文档中找到的对象,而Name 是它的一个属性 (见这里 )。它被定义为:

Worksheet.Name Property:  Returns or sets a String value that 
 represents the object name.
 

因此,通过调查不同的对象定义,我们能够理解这段代码Worksheets.Add().Name = "StackOveflow"

Add() 创建并添加一个新工作表并返回对它的引用 ,然后我们将其Name 属性设置为“StackOverflow”


现在让我们更正式,Excel包含几个对象。这些对象可以由同一类的一个或多个Excel对象集合组成。 WorkSheets 是一个Worksheet 对象的集合。每个Object都有一些程序员可以与之交互的属性和方法。

Excel对象模型引用Excel 对象层次结构

所有对象的顶部是Application 对象,它表示Excel实例本身。在VBA中编程需要很好地理解这个层次结构,因为我们总是需要对对象的引用才能调用Method或Set / Get a property。

(非常简化的)Excel对象模型可以表示为,

                            Application
                             Workbooks
                             Workbook
                            Worksheets
                             Worksheet
                              Range
 

Worksheet对象的更详细版本(如Excel 2007中所示)如下所示,

在此处输入图像描述

可以在此处找到完整的Excel对象模型。

最后,一些对象可能具有events (例如: Workbook.WindowActivate ),它们也是Excel对象模型的一部分。

你好,世界

  1. 打开Visual Basic编辑器(请参阅打开Visual Basic编辑器
  2. 单击插入 - >模块以添加新模块:

在此处输入图像描述

  1. 将以下代码复制并粘贴到新模块中:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

获得:

在此处输入图像描述

  1. 单击Visual Basic工具栏中的绿色“播放”箭头(或按F5)以运行该程序: 在此处输入图像描述

  2. 选择新创建的子“hello”,然后单击Run在此处输入图像描述

  3. 完成后,您应该看到以下窗口:

在此处输入图像描述

打开Visual Basic编辑器(VBE)


第1步:打开工作簿

在此处输入图像描述


步骤2选项A:按Alt + F11

这是打开VBE的标准快捷方式。

步骤2选项B:开发人员选项卡 - >查看代码

首先,必须将“开发人员”选项卡添加到功能区。转到文件 - >选项 - >自定义功能区,然后选中开发人员框。

在此处输入图像描述

然后,转到开发人员选项卡,然后单击“查看代码”或“Visual Basic”

在此处输入图像描述

步骤2选项C:“视图”选项卡>“宏”>“单击编辑”按钮以打开“现有宏”

所有这三个选项都将打开Visual Basic编辑器(VBE):

在此处输入图像描述