第3章 简单而实用的VBA代码
本章将针对上一章介绍的几个重要对象,给出与它们相关的一些简单而实用的VBA代码,这样既可以复习这几个重要对象的知识,又能了解它们在Excel VBA中的具体用法,还可以掌握一些简单的代码实例。
3.1控制窗口
这里说的控制窗口,是指通过VBA程序控制Excel窗口的各种状态,如调整窗口大小、设置窗口标题、控制窗口界面显示状态、改变窗口显示比例等。
3.1.1最大化Excel程序窗口
要让Excel程序窗口最大化,可以使用下面的代码:
Sub 最大化Excel程序窗口()
Application.WindowState = xlMaximized
End Sub
WindowState属性有以下3个常量:
xlMaximized:最大化窗口。
xlMinimized:最小化窗口。
xlNormal:恢复正常窗口。
3.1.2设置工作簿窗口大小
下面的代码将当前Excel工作簿窗口的高度和宽度各缩小为原来的四分之一:
Sub 设置工作簿窗口大小()
Dim h As Long, w As Long
ActiveWindow.WindowState = xlNormal
h = ActiveWindow.Height
w = ActiveWindow.Width
ActiveWindow.Height = h / 4
ActiveWindow.Width = w / 4
End Sub
3.1.3设置工作簿窗口标题栏的显示内容
如果想要人工控制工作簿窗口标题栏的显示内容,那么可以使用下面的代码:
Sub 设置工作簿窗口标题栏的显示内容()
Application.Caption = "使用程序设置Excel工作簿的标题"
End Sub
运行上面的代码后,将显示如图3-1所示的结果。
图3-1 通过程序改变Excel窗口标题栏的显示内容
3.1.4设置显示比例
要设置工作簿窗口内的显示比例,可以使用下面的代码:
Sub 设置显示比例()
ActiveWindow.Zoom = True
ActiveWindow.Zoom = 200
End Sub
3.1.5控制Excel界面的显示
Excel程序窗口中的公式栏、滚动条和状态栏的显示状态,由下面3个属性控制: DisplayFormulaBar属性:控制是否显示公式栏。
DisplayScrollBars属性:控制是否显示滚动条。
DisplayStatusBar属性:控制是否显示状态栏。
因此,可以使用下面的代码来控制公式栏、滚动条和状态栏都不显示:
Sub 控制Excel界面的显示()
With Application
.DisplayFormulaBar = False
.DisplayScrollBars = False
.DisplayStatusBar = False
End With
End Sub
运行上面的代码后,Excel工作簿窗口将显示如图3-2所示的结果,隐藏了公式栏、滚动条和状态栏。
图3-2 隐藏了公式栏、滚动条和状态栏
3.1.6设置状态栏
您希望在Excel运行过程中,时刻在状态栏中反映出当前Excel正在做什么吗?那么可以设置状态栏中的显示内容。使用StatusBar属性可以设置或返回状态栏中的内容,而Dis playStatusBar属性则控制是否显示Excel的状态栏。
Sub 设置状态栏()
OldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "系统正在进行数值运算,请耐心等待"
End Sub
运行上面的代码,在Excel窗口的状态栏中,将显示如图3-3所示的结果。
图3-3 自定义状态栏中的显示内容
由于在上面的代码开始处使用一个变量保存了Excel状态栏的初始状态。因此,在执行完相应操作后,可以使用下面的代码将状态栏还原为初始值:
Application.StatusBar = False
Application.DisplayStatusBar = OldStatusBar
3.2处理工作簿
本节将给出一些使用VBA处理Excel工作簿的代码实例,包括工作簿的一些基本操作,例如新建、打开、保存、关闭工作簿以及判断工作簿状态和设置工作簿密码等内容。
3.2.1新建工作簿
Workbooks集合包含Excel程序中所有打开的工作簿对象(Workbook)。可以使用Wor dkbooks集合中的Add方法来新建工作簿,代码如下:
Sub 新建工作簿()
Workbooks.Add
End Sub
3.2.2打开工作簿
excel常用的函数有哪些使用Workbooks集合的Open方法可以打开一个指定的工作簿,在代码中要注意正确输入工作簿的路径和名称。例如,下面的代码将打开电脑中磁盘分区E中的文件夹为“工作簿素材”中的工作簿“第1章.xlsx”:
Sub 打开工作簿()
Workbooks.Open ("E:\工作簿素材\第1章.xlsx")
End Sub
3.2.3保存工作簿
可以使用Workbooks集合的Save方法对工作簿进行保存,相当于单击Excel快速访问工具栏中的【保存】按钮。例如,下面的代码对当前工作簿进行保存:
Sub 保存工作簿()
ActiveWorkbook.Save
End Sub
运行上面的代码,将对当前工作簿自动保存。如果工作簿从未保存过,那么将会自动提示用户是否对当前工作簿进行保存。
3.2.4另存工作簿
如果需要为当前工作簿创建一个副本,那么需要使用另存为工作簿的功能,这时可以使用Workbooks集合的SaveAs方法。下面的代码将当前工作簿以“第23章.xlsm”名称进行保存:
Sub 另存工作簿()
ActiveWorkbook.SaveAs Filename:="第23章.xlsm"
End Sub
3.2.5保存所有工作簿
如果要对当前所有打开的多个工作簿进行一次性保存,可以使用For Each语句遍历所有工作簿,然后对每个工作簿执行保存命令,代码如下:
Sub 保存所有工作簿()
Dim WB As Workbook
For Each WB In Workbooks
WB.Save
Next WB
End Sub
3.2.6保存并关闭所有工作簿
如果希望对所有的工作簿再保存后关闭,那么可以使用下面的代码:
Sub 保存并关闭所有工作簿()
Dim WB As Workbook
For Each WB In Workbooks
If WB.Name <> ThisWorkbook.Name Then
WB.Close savechanges:=True
End If
Next WB
ThisWorkbook.Close savechanges:=True
End Sub
运行上面的代码,Excel将遍历所有已打开的工作簿,ThisWorkbook属性表示当前包含宏的工作簿。需要设置一个IF语句来判断当前要关闭的工作簿是否是宏工作簿,如果不是则关闭。因为如果关闭了包含宏的工作簿,那么这段代码也就无法继续运行了。
3.2.7判断工作簿是否存在
由于使用VBA程序打开工作簿都是自动完成而不需要人工干预的,因此在运行打开工作簿的代码前应该先判断该工作簿是否已经存在。如果该工作簿不存在,那么程序将会出错。在VBA代码中可以使用Dir函
数来获取指定文件所在的路径字符串,然后使用LEN 函数判断字符串长度。如果不大于0,那么说明指定工作簿不存在。可以使用以下代码在打开工作簿前先判断工作簿是否存在:
Sub 判断工作簿是否存在()
If Not Len(Dir("E:\工作簿素材\第1章.xlsx")) > 0 Then
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论