ExcelVBAApplication方法属性大全.docx
- 文档编号:17465734
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:47
- 大小:41.86KB
ExcelVBAApplication方法属性大全.docx
《ExcelVBAApplication方法属性大全.docx》由会员分享,可在线阅读,更多相关《ExcelVBAApplication方法属性大全.docx(47页珍藏版)》请在冰点文库上搜索。
ExcelVBAApplication方法属性大全
ApplicationExcel方法属性
Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿、工作表、单元格集合以及它们包含的数据。
Application对象包含:
应用程序设置和选项,许多选项与“选项”对话框中的选项相同。
返回顶级对象的方法,例如ActiveCell、ActiveSheet,等等。
本文使用VBA代码示例简要介绍了与Application对象相关的经常使用的对象、方法和属性,其中一些成员能够改变用户与Excel应用程序交互的方式,还能够改变应用程序的外观和式样。
熟悉Application对象能够让您扩展和调整Excel的功能,以满足自已的需求。
本文主要介绍的内容如下:
从Application对象中引用对象
Application对象相关的集合
∙AddIns集合
∙Columns集合和Rows集合
∙Dialogs集合
∙Sheets集合
Application对象相关的属性
∙ActiveCell属性
∙ActiveChart属性
∙ActiveSheet属性
∙ActiveWindow属性
∙ActiveWorkbook属性
∙RangeSelection属性
∙ScreenUpdating属性
∙Selection属性
∙StatusBar属性
∙ThisWorkbook属性
Application对象相关的方法
∙FindFile方法和Dialogs集合
∙GetOpenFilename方法
∙GetSaveAsFilename方法
∙InputBox方法
∙Run方法
Application对象相关的事件
∙激活Application事件监视
使用Application对象执行其它任务
∙删除工作表而显示提示信息(DisplayAlerts属性)
∙无须提示用户而保存工作表(DisplayAlerts属性)
∙使用SendKeys方法发送信息到记事本
∙安排宏在指定的时间和间隔运行(OnTime方法)
Application对象的其它一些属性和方法
∙Caller属性
∙CutCopyMode属性
∙Evaluate方法
∙OnKey方法
∙ThisCell属性
∙WorksheetFunction属性
∙改变光标显示(Cursor属性)
∙获取或改变Excel窗口的状态或大小(WindowState属性)
∙获取系统信息
∙自动隐藏公式栏(DisplayFormulaBar属性)
∙将Excel全屏显示(DisplayFullScreen属性)
∙获取Excel启动文件夹的路径(StartupPath属性)
∙检测Excel的版本(Version属性)
∙打开最近使用过的文档(RecentFiles属性)
∙文件对话框操作(FileDialog属性)
∙改变Excel工作簿的名称(Caption属性)
∙调用Windows的计算器(ActivateMicrosoftApp方法)
∙暂时停止宏运行(Wait方法)
∙重新计算工作簿(Calculate方法)
∙控制函数重新计算(Volatile方法)
∙获取重叠区域(Intersect方法)
∙获取路径分隔符(PathSeparator属性)
∙快速移至指定位置(Goto方法)
∙关闭Excel(Quit方法)
从Application对象中引用对象
使用Application属性返回Application对象。
在引用应用程序之后,要访问Application对象下面的对象,则依次下移对象模型层级。
例如,下面的代码设置第一个工作簿的第一个工作表中的第一个单元格的值为20:
Application.Workbooks
(1).Worksheets
(1).Cells(1,1)=20
要引用该单元格,上述代码以Application对象开始,移至第一个工作簿,然后到第一个工作表,最后到达单元格。
下面的示例代码在另一个应用程序中创建一个Excel工作簿,然后打开该工作簿:
Setxl=CreateObject("Excel.Sheet")xl.Application.Workbooks.Open"newbook.xls"
可以使用许多属性和方法返回最常用的用户界面对象,例如活动工作表(ActiveSheet属性),而无须Application对象限定。
例如,下面的代码:
Application.ActiveSheet.Name="MonthlySales"
可以替换为:
ActiveSheet.Name="MonthlySales"
然而,在使用简短的引用时必须小心,必须已经选择了正确的对象。
如果已经使用诸如Worksheet对象的Activate方法选择了合适的工作簿和工作表,那么能够使用下面的代码引用第一个单元格:
Cells(1,1)=20
有一些实例必须使用Application限定引用。
例如,OnTime方法、应用程序窗口的Width和Height属性。
通常,处理Excel窗口外观的属性或者影响应用程序全部行为的属性需要Application限定,例如DisplayFormulaBar属性用于显示或隐藏公式栏。
Calculation方法也需要限定。
Application对象相关的集合
本节介绍与Application对象相关的一些集合。
AddIns集合
AddIns集合代表当前在Excel中装载的所有加载项。
就像遍历任何其它集合一样,可以列出应用程序中关于加载项的不同类型的信息。
下面的示例列出当前在Excel中装载的加载项的路径和名称:
SubListAddIns()
DimmyAddinAsAddIn
ForEachmyAddinInAddIns
MsgBoxmyAddin.FullName
Next
EndSub
Columns集合和Rows集合
这些集合代表当前工作簿中的列和行,可以使用它们分别选择指定的列和行。
Application.Columns(4).Select
上述语句选择D列,就像在工作表中单击该列的标题一样。
Application.Rows(5).Select
上述语句选择第5行,就像在工作表中单击该行的行边一样。
Dialogs集合
Dialogs集合由应用程序中所有的对话框组成。
本文后面将详细介绍该集合。
Sheets集合
Sheets对象返回指定工作簿或活动工作簿中所有工作表的集合。
Sheets集合包含Chart对象或Worksheet对象。
下面的示例打印活动工作簿中所有工作表:
Application.Sheets.PrintOut
下面的示例遍历工作簿中所有的工作表,并打印包含有数据的工作表:
ForiSheet=1ToApplication.Sheets.Count
IfNotIsEmpty(Application.Sheets(iSheet).UsedRange)ThenApplication.Sheets(iSheet).PrintOutcopies:
=1
EndIf
NextiSheet
Application对象相关的属性
在Excel2007应用程序中,有大量的属性用来访问不同的对象。
这里,只探讨经常使用的属性。
∙ActiveCell
∙ActiveChart
∙ActiveSheet
∙ActiveWindow
∙ActiveWorkbook
∙RangeSelection
∙ScreenUpdating
∙Selection
∙StatusBar
∙ThisWorkbook
ActiveCell属性
Application对象的ActiveCell属性返回Range对象,代表活动工作簿的活动工作表中的活动单元格。
如果没有指定对象限定,那么该属性返回活动窗口中的活动单元格。
注意区分活动单元格和单元格选区。
活动单元格是当前选区里的单个单元格,选区可能包含很多单元格,但仅有一个单元格是活动单元格。
下面的示例改变活动单元格的字体格式。
注意确保正在处理正确的单元格,Worksheets集合的Activate方法使工作表Sheet1为活动工作表。
Worksheets("Sheet1").ActivateWithActiveCell.Font.Bold=True.Italic=TrueEndWith
ActiveChart属性
ActiveChart属性返回Chart对象,代表活动图表,无论该图表是嵌入式图表还是图表工作表。
当嵌入式图表被选择或者被激活时,该图表是活动图表。
下面的示例使用ActiveChart属性在工作表MonthlySales中添加一个三维柱形图:
SubAddChart()
Charts.Add
WithActiveChart
.ChartType=xl3DColumn
.SetSourceDataSource:
=Sheets("Sheet1").Range("B3:
H15")
.LocationWhere:
=xlLocationAsObject,Name:
="MonthlySales"
.HasTitle=True
.ChartTitle.Characters.Text="MonthlySalesbyCategory"
EndWith
EndSubActiveSheet属性
ActiveSheet属性返回Worksheet对象,代表当前所选择的工作表(在顶部的工作表)。
在一个工作簿中仅仅有一个工作表是活动工作表。
下面的示例显示活动工作表的名字:
MsgBox"活动工作表的名字是"&ActiveSheet.Name
下面的示例由用户指定复制活动工作表的次数并复制活动工作表,将复制的工作表放置到工作表Sheet1的前面:
SubCopyActiveSheet()
DimxAsInteger,numtimesAsInteger
x=InputBox("请输入复制活动工作表的次数")
Fornumtimes=1Tox'在工作表Sheet1的前面放置工作表副本
ActiveWorkbook.ActiveSheet.CopyBefore:
=ActiveWorkbook.Sheets("Sheet1")
Next
EndSub
ActiveWindow属性
ActiveWindow属性返回Window对象,代表活动窗口(在顶部的窗口)。
下面的示例显示活动窗口的名称(Caption属性):
MsgBox"活动窗口的名称是"&ActiveWindow.Caption
Caption属性返回活动窗口的名称,允许使用名称而不是索引号来更清楚地访问该窗口。
下面的示例选择并打印工作表,然后对第二个工作表重复这一过程:
SubPrintWorksheet()
Application.ScreenUpdating=False
Sheets("Sales").Select
ActiveWindow.SelectedSheets.PrintOutCopies:
=1,Collate:
=True
Sheets("Expenses").Select
ActiveWindow.SelectedSheets.PrintOutCopies:
=1,Collate:
=True
EndSub
在该示例中,您可能奇怪为什么将ScreenUpdating属性设置为False。
当Excel执行一系列操作任务时,屏幕被更新并且被刷新许多次,这导致屏幕闪烁。
设置ScreenUpdating属性为False消除这些闪烁。
此外,因为计算机处理器无须为刷新屏幕而暂停,这能使大的应用程序运行得更快。
ActiveWorkbook属性
ActiveWorkbook属性返回Workbook对象,代表活动窗口中的工作簿。
下面的示例显示活动工作簿的名称:
MsgBox"活动工作簿的名称是"&ActiveWorkbook.Name
下面的示例设置计算模式为手动,然后遍历并计算活动工作簿中的每个工作表:
SubCalcBook()
DimwksAsWorksheet
Application.Calculate=xlManual
ForEachwksInActiveWorkbook.Worksheets
wks.Calculate
Next
Setwks=Nothing
EndSub
RangeSelection属性
RangeSelection属性返回Range对象,代表在指定的窗口的工作表中所选择的单元格,即使是工作表中激活或选择的图形对象。
下面的示例显示活动窗口的工作表中所选择的单元格的地址:
MsgBoxApplication.ActiveWindow.RangeSelection.Address
当选择单元格区域时,RangeSelection属性和Selection对象代表相同的单元格区域。
当选择图形时,RangeSelection属性返回以前的单元格选区。
关于Selection属性的更多介绍参见下节。
下面的示例显示单元格中头三个字符:
Range("A1").Select
MsgBoxLeft(ActiveWindow.RangeSelection,3)
下面的示例显示单元格名称的头三个字符:
Range("A1").Select
MsgBoxLeft(ActiveWindow.RangeSelection.Name.Name,3)
命令RangeSelection.Name.Name返回单元格名称。
ScreenUpdating属性
ScreenUpdating属性用于控制屏幕刷新,可将其值设置为True或False。
通常,Excel开启了屏幕刷新(即该属性值为True),因此在代码执行时,Excel会随着代码的操作而不断更新屏幕显示,这样在运行处理涉及到多个工作表或单元格中的大量数据的代码(选择或激活对象)时,屏幕会不停闪烁,并且会占用CPU的处理时间,从而降低程序的运行速度。
可以在程序代码的开始部分设置ScreenUpdating属性为False,即Application.ScreenUpdating=False,以关闭屏幕刷新,这样不仅能够使代码运行更快,而且使得界面对用户更为友好。
在程序结束前,将该属性设置为True,以恢复Excel对屏幕更新的控制。
然而,在宏运行的过程中,如果需要显示用户窗体或者内置对话框,建议先恢复屏幕刷新,否则拖动用户窗体时,会在屏幕上产生橡皮擦的效果。
当然,在显示该对象后,可以重新关闭屏幕刷新。
Selection属性
Selection属性返回活动窗口中所选择的对象。
例如,对于单元格,该属性返回Range对象;对于图表,该属性返回Chart对象。
如果使用该属性时没有限定引用,则等价于Application.Selection。
下面的示例清除工作表Sheet1中的选区(假设选区是单元格区域):
Worksheets("Sheet1").ActivateSelection.Clear
下面的示例在变量NumRows中存储所选行的总数:
numrows=0
ForEachareaInSelection.Areas
numrows=numrows+area.Rows.Count
Nextarea
下面的示例统计所选区域中单元格的数量,并在消息框中显示结果:
DimcellAsObject
DimcountAsInteger
count=0
ForEachcellInSelection
count=count+1
Nextcell
MsgBoxcount&"项被选择"
下面的示例确保在输入数据之前选择的是工作表:
IfTypeName(ActiveSheet)<>"Worksheet"OrTypeName(Selection)<>"Range"Then
MsgBox"本程序仅用于单元格区域",vbCritical
ExitSub
EndIf
Range("A1").Value=20
StatusBar属性
StatusBar属性返回或设置状态栏中的文本。
该属性允许改变显示在Excel窗口底部的状态栏中的信息,这特别有助于使用户了解需要花时间完成的操作处理的进度。
因此,状态栏是一种告知用户当前程序信息的极好方式,并且状态栏不会干扰用户,也易被开发者利用。
如果Excel控制状态栏,则StatusBar属性返回False。
此外,要恢复缺省的状态栏文本,只需设置该属性为False,即使隐藏了状态栏。
例如,下面的示例将现在正在处理的文件赋值给状态栏:
Subtest()
DimFileNumAsInteger
FileNum=0
ForEachfileInFiles
Application.StatusBar="现在正在处理文件"&FileNum
FileNum=FileNum+1
Next
EndSub
然后,当程序结束时,使用下面的语句将状态栏恢复为正常:
Application.StatusBar=False
这是通知Excel并清空状态栏的最简单的方式。
除非重新启动Excel,否则状态栏中会一直保持着使用Application.StatusBar所显示的文本,因此应该在合适的地方使用Application.StatusBar=False语句,尤其是应该考虑发生错误时如何恢复状态栏。
另外,在使用状态栏时,需要选择一个合适的更新间隔,使之既不会影响程序性能又能为用户提供有用的信息。
可以创建自已的过程来使用StatusBar属性,以显示宏或其它过程的进度:
SubShowStatusBarProgress()
DimiAsLong
DimpctDoneAsDouble
DimnumSquaresAsLong
ConstMAXSQRAsLong=15
Fori=1To30
pctDone=i/30
numSquares=pctDone*MAXSQR
Application.StatusBar=Application.WorksheetFunction.Rept(Chr(60),numSquares)
Application.WaitNow+TimeSerial(0,0,1)
Nexti
Application.StatusBar=False
EndSub
本示例随着程序的运行逐渐显示由常量MAXSQR定义的15个小于符号,小于符号使用ASCⅡ字符60生成。
本示例没有指示过程执行多长时间,只是显示了执行的进度。
Wait方法摸拟宏占用的执行时间。
要在VBA代码中使用状态栏,首先确定在用户界面中是否显示了状态栏(因为用户极有可能关闭了显示状态栏的选项),并且在状态栏使用完毕后,应将其恢复到用户原先的设置,因此在程序开始前,将状态栏的信息保存到一个变量中:
bStatusBarInfo=Application.DisplayStatusBar
然后,将DisplayStatusBar属性设置为True,以确保显示状态栏。
在程序结束前,将状态栏恢复到原先的设置:
Application.DisplayStatusBar=bStatusBarInfo
ThisWorkbook属性
ThisWorkbook属性返回Workbook对象,代表当前正运行的宏所在的工作簿。
该属性允许加载项引用包含代码的工作簿。
ActiveWorkbook属性在该实例中不会工作,因为活动工作簿可能不是包含加载项代码的工作簿。
换句话说,ActiveWorkbook属性不会返回加载项工作簿,它返回调用加载项的工作簿。
如果从VB代码创建了一个加载项,应该使用ThisWorkbook属性限定必须在编译到该加载项的工作簿中运行的语句。
下面的示例关闭包含示例代码的工作簿,如果修改了该工作簿,则不会保存修改。
ThisWorkbook.CloseSaveChanges:
=False
下面的示例遍历每个打开的工作簿并将其关闭,然后关闭包含该代码的工作簿。
SubCloseOpenWrkBks()
DimwrkbAsWorkbook
ForEachwbkInApplication.Workbooks
Ifwrkb.Name<>ThisWorkbook.NameThen
wbk.CloseTrue
EndIf
Nextwbk
ThisWorkbook.CloseTrue
EndSub
Application对象相关的方法
下面探讨Application对象经常使用的一些方法。
FindFile方法和Dialogs集合
与GetOpenFilename方法不同,FileFind方法显示“打开”对话框并允许用户打开文件。
如果成功打开文件,那么该方法返回True;如果用户取消了该对话框,那么该方法返回False。
下面的示例显示一条消息,告诉用户打开一个指定的文件,然后显示“打开”对话框。
如果用户不能够打开该文件,则显示一条消息。
SubOpenFile1()
DimbSuccessAsBoolean
MsgBox"请定位到MonthlySales.xls文件."
bSuccess=Application.FindFile
IfNotbSuccessThen
MsgBox"该文件没有打开."
EndIf
EndSub
也可以使用Dialogs集合打开特定的对话框来完成相同的操作。
使用Dialogs集合的优势之一是使用Show方法,可以传递参数修改内置对话框的缺省行为。
例如,xlDialogOpen的参数为:
file_text、update_links、read_only、format、prot_pwd、write_res_pwd、ignore_rorec、file_origin、custom_delimit、add_logical、editable、file_access、notify_logical、converter。
注:
要找到特定对话框的参数,在Excel帮助的“内置对话框参数列表”中查找相应的对话框常量。
下面的示例显示在文件名框中带有Book1.xlsm的“打开”对话框,允许用户显示缺省文件而不必选择文件。
SubOpenFile2()
Application.Dialogs(XlBuiltInDialog.xlDialogOpen).Showarg1:
="Book1.xlsm"
EndSub
Dialogs集合的优点在于,可以使用它来显示任何的Excel对话框(大约有250个)。
通过下述步骤可以找到对话框完整列表。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ExcelVBAApplication 方法 属性 大全