




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Application Excel 方法属性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工作簿,然后打开该工作簿:Set xl = CreateObject(Excel.Sheet)xl.Application.Workbooks.Open newbook.xls可以使用许多属性和方法返回最常用的用户界面对象,例如活动工作表(ActiveSheet属性),而无须Application对象限定。例如,下面的代码:Application.ActiveSheet.Name = Monthly Sales可以替换为:ActiveSheet.Name = Monthly Sales然而,在使用简短的引用时必须小心,必须已经选择了正确的对象。如果已经使用诸如Worksheet对象的Activate方法选择了合适的工作簿和工作表,那么能够使用下面的代码引用第一个单元格:Cells(1, 1) = 20有一些实例必须使用Application限定引用。例如,OnTime方法、应用程序窗口的Width和Height属性。通常,处理Excel窗口外观的属性或者影响应用程序全部行为的属性需要Application限定,例如DisplayFormulaBar属性用于显示或隐藏公式栏。Calculation方法也需要限定。Application对象相关的集合本节介绍与Application对象相关的一些集合。AddIns集合AddIns集合代表当前在Excel中装载的所有加载项。就像遍历任何其它集合一样,可以列出应用程序中关于加载项的不同类型的信息。下面的示例列出当前在Excel中装载的加载项的路径和名称:Sub ListAddIns() Dim myAddin As AddIn For Each myAddin In AddIns MsgBox myAddin.FullNameNextEnd SubColumns集合和Rows集合这些集合代表当前工作簿中的列和行,可以使用它们分别选择指定的列和行。Application.Columns(4).Select上述语句选择D列,就像在工作表中单击该列的标题一样。Application.Rows(5).Select上述语句选择第5行,就像在工作表中单击该行的行边一样。Dialogs集合Dialogs集合由应用程序中所有的对话框组成。本文后面将详细介绍该集合。Sheets集合Sheets对象返回指定工作簿或活动工作簿中所有工作表的集合。Sheets集合包含Chart对象或Worksheet对象。下面的示例打印活动工作簿中所有工作表:Application.Sheets.PrintOut下面的示例遍历工作簿中所有的工作表,并打印包含有数据的工作表:For iSheet = 1 To Application.Sheets.Count If Not IsEmpty(Application.Sheets(iSheet).UsedRange) Then Application.Sheets(iSheet).PrintOut copies:=1 End If Next iSheetApplication对象相关的属性在Excel 2007应用程序中,有大量的属性用来访问不同的对象。这里,只探讨经常使用的属性。 ActiveCell ActiveChart ActiveSheet ActiveWindow ActiveWorkbook RangeSelection ScreenUpdating Selection StatusBar ThisWorkbookActiveCell属性Application对象的ActiveCell属性返回Range对象,代表活动工作簿的活动工作表中的活动单元格。如果没有指定对象限定,那么该属性返回活动窗口中的活动单元格。注意区分活动单元格和单元格选区。活动单元格是当前选区里的单个单元格,选区可能包含很多单元格,但仅有一个单元格是活动单元格。下面的示例改变活动单元格的字体格式。注意确保正在处理正确的单元格,Worksheets集合的Activate方法使工作表Sheet1为活动工作表。Worksheets(Sheet1).Activate With ActiveCell.Font .Bold = True .Italic = True End WithActiveChart属性ActiveChart属性返回Chart对象,代表活动图表,无论该图表是嵌入式图表还是图表工作表。当嵌入式图表被选择或者被激活时,该图表是活动图表。下面的示例使用ActiveChart属性在工作表Monthly Sales中添加一个三维柱形图:Sub AddChart() Charts.Add With ActiveChart .ChartType = xl3DColumn .SetSourceData Source:=Sheets(Sheet1).Range(B3:H15) .Location Where:=xlLocationAsObject, Name:=Monthly Sales .HasTitle = True .ChartTitle.Characters.Text = Monthly Sales by Category End WithEnd SubActiveSheet属性ActiveSheet属性返回Worksheet对象,代表当前所选择的工作表(在顶部的工作表)。在一个工作簿中仅仅有一个工作表是活动工作表。下面的示例显示活动工作表的名字:MsgBox 活动工作表的名字是 & ActiveSheet.Name下面的示例由用户指定复制活动工作表的次数并复制活动工作表,将复制的工作表放置到工作表Sheet1的前面:Sub CopyActiveSheet()Dim x As Integer, numtimes As Integer x = InputBox(请输入复制活动工作表的次数) For numtimes = 1 To x 在工作表Sheet1的前面放置工作表副本 ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheet1) NextEnd SubActiveWindow属性ActiveWindow属性返回Window对象,代表活动窗口(在顶部的窗口)。下面的示例显示活动窗口的名称(Caption属性):MsgBox 活动窗口的名称是 & ActiveWindow.CaptionCaption属性返回活动窗口的名称,允许使用名称而不是索引号来更清楚地访问该窗口。下面的示例选择并打印工作表,然后对第二个工作表重复这一过程:Sub PrintWorksheet() Application.ScreenUpdating = False Sheets(Sales).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True Sheets(Expenses).Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=TrueEnd Sub在该示例中,您可能奇怪为什么将ScreenUpdating属性设置为False。当Excel执行一系列操作任务时,屏幕被更新并且被刷新许多次,这导致屏幕闪烁。设置ScreenUpdating属性为False消除这些闪烁。此外,因为计算机处理器无须为刷新屏幕而暂停,这能使大的应用程序运行得更快。ActiveWorkbook属性ActiveWorkbook属性返回Workbook对象,代表活动窗口中的工作簿。下面的示例显示活动工作簿的名称:MsgBox 活动工作簿的名称是 & ActiveWorkbook.Name下面的示例设置计算模式为手动,然后遍历并计算活动工作簿中的每个工作表:Sub CalcBook()Dim wks As Worksheet Application.Calculate = xlManual For Each wks In ActiveWorkbook.Worksheets wks.Calculate Next Set wks = NothingEnd SubRangeSelection属性RangeSelection属性返回Range对象,代表在指定的窗口的工作表中所选择的单元格,即使是工作表中激活或选择的图形对象。下面的示例显示活动窗口的工作表中所选择的单元格的地址:MsgBox Application.ActiveWindow.RangeSelection.Address当选择单元格区域时,RangeSelection属性和Selection对象代表相同的单元格区域。当选择图形时,RangeSelection属性返回以前的单元格选区。关于Selection属性的更多介绍参见下节。下面的示例显示单元格中头三个字符:Range(A1).SelectMsgBox Left(ActiveWindow.RangeSelection, 3)下面的示例显示单元格名称的头三个字符:Range(A1).SelectMsgBox Left(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 = 0For Each area In Selection.Areas numrows = numrows + area.Rows.CountNext area下面的示例统计所选区域中单元格的数量,并在消息框中显示结果:Dim cell As ObjectDim count As Integer count = 0 For Each cell In Selection count = count + 1 Next cell MsgBox count & 项被选择下面的示例确保在输入数据之前选择的是工作表: If TypeName(ActiveSheet) Worksheet Or TypeName(Selection) Range Then MsgBox 本程序仅用于单元格区域, vbCritical Exit Sub End If Range(A1).Value = 20StatusBar属性StatusBar属性返回或设置状态栏中的文本。该属性允许改变显示在Excel窗口底部的状态栏中的信息,这特别有助于使用户了解需要花时间完成的操作处理的进度。因此,状态栏是一种告知用户当前程序信息的极好方式,并且状态栏不会干扰用户,也易被开发者利用。如果Excel控制状态栏,则StatusBar属性返回False。此外,要恢复缺省的状态栏文本,只需设置该属性为False,即使隐藏了状态栏。例如,下面的示例将现在正在处理的文件赋值给状态栏:Sub test()Dim FileNum As Integer FileNum = 0 For Each file In Files Application.StatusBar = 现在正在处理文件 & FileNum FileNum = FileNum + 1 NextEnd Sub然后,当程序结束时,使用下面的语句将状态栏恢复为正常:Application.StatusBar = False这是通知Excel并清空状态栏的最简单的方式。除非重新启动Excel,否则状态栏中会一直保持着使用Application.StatusBar所显示的文本,因此应该在合适的地方使用Application.StatusBar = False语句,尤其是应该考虑发生错误时如何恢复状态栏。另外,在使用状态栏时,需要选择一个合适的更新间隔,使之既不会影响程序性能又能为用户提供有用的信息。可以创建自已的过程来使用StatusBar属性,以显示宏或其它过程的进度:Sub ShowStatusBarProgress()Dim i As LongDim pctDone As DoubleDim numSquares As Long Const MAXSQR As Long = 15 For i = 1 To 30 pctDone = i / 30 numSquares = pctDone * MAXSQR Application.StatusBar = Application.WorksheetFunction.Rept(Chr(60), numSquares) Application.Wait Now + TimeSerial(0, 0, 1) Next i Application.StatusBar = FalseEnd Sub本示例随着程序的运行逐渐显示由常量MAXSQR定义的15个小于符号,小于符号使用ASC字符60生成。本示例没有指示过程执行多长时间,只是显示了执行的进度。Wait方法摸拟宏占用的执行时间。要在VBA代码中使用状态栏,首先确定在用户界面中是否显示了状态栏(因为用户极有可能关闭了显示状态栏的选项),并且在状态栏使用完毕后,应将其恢复到用户原先的设置,因此在程序开始前,将状态栏的信息保存到一个变量中:bStatusBarInfo=Application.DisplayStatusBar然后,将DisplayStatusBar属性设置为True,以确保显示状态栏。在程序结束前,将状态栏恢复到原先的设置:Application.DisplayStatusBar=bStatusBarInfoThisWorkbook属性ThisWorkbook属性返回Workbook对象,代表当前正运行的宏所在的工作簿。该属性允许加载项引用包含代码的工作簿。ActiveWorkbook属性在该实例中不会工作,因为活动工作簿可能不是包含加载项代码的工作簿。换句话说,ActiveWorkbook属性不会返回加载项工作簿,它返回调用加载项的工作簿。如果从VB代码创建了一个加载项,应该使用ThisWorkbook属性限定必须在编译到该加载项的工作簿中运行的语句。下面的示例关闭包含示例代码的工作簿,如果修改了该工作簿,则不会保存修改。ThisWorkbook.Close SaveChanges:=False下面的示例遍历每个打开的工作簿并将其关闭,然后关闭包含该代码的工作簿。Sub CloseOpenWrkBks()Dim wrkb As Workbook For Each wbk In Application.Workbooks If wrkb.Name ThisWorkbook.Name Then wbk.Close True End If Nextwbk ThisWorkbook.Close TrueEnd SubApplication对象相关的方法下面探讨Application对象经常使用的一些方法。FindFile方法和Dialogs集合与GetOpenFilename方法不同,FileFind方法显示“打开”对话框并允许用户打开文件。如果成功打开文件,那么该方法返回True;如果用户取消了该对话框,那么该方法返回False。下面的示例显示一条消息,告诉用户打开一个指定的文件,然后显示“打开”对话框。如果用户不能够打开该文件,则显示一条消息。Sub OpenFile1()Dim bSuccess As Boolean MsgBox 请定位到MonthlySales.xls文件. bSuccess = Application.FindFile If Not bSuccess Then MsgBox 该文件没有打开. End IfEnd Sub也可以使用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的“打开”对话框,允许用户显示缺省文件而不必选择文件。Sub OpenFile2() Application.Dialogs(XlBuiltInDialog.xlDialogOpen).Show arg1:=Book1.xlsmEnd SubDialogs集合的优点在于,可以使用它来显示任何的Excel对话框(大约有250个)。通过下述步骤可以找到对话框完整列表。(查找对话框集合的成员列表)1、打开VBE。2、单击“查看对象浏览器”或者按F2键,显示“对象浏览器”。3、在搜索框中输入xlDialog。4、单击“搜索”按钮。对Excel 2007而言,可以使用CommandBar对象来执行功能区中的命令,例如,下面的语句显示“定位”对话框:Application.CommandBars.ExecuteMso (GoTo)ExecuteMso方法执行由idMso参数标识的控件。idMso参数的取值可以查找网上资源。下面的语句显示“设置单元格格式”对话框中的“字体”选项卡:Application.CommandBars.ExecuteMso (FormatCellsFontDialog)GetOpenFilename方法GetOpenFilename方法显示标准的“打开”对话框并从用户处获取文件名称,但不真正打开任何文件,而是以字符串返回用户选择的文件名及其路径。那么,您可以利用该字符串完成所需要的操作,例如可以传递返回的结果到OpenText方法。下面是GetOpenFilename方法的语法(所有参数都是可选的):GetOpenFilename(FileFilter,FilterIndex,Title,ButtonText,MultiSelect)参数FileFilter是一个字符串,规定筛选条件(例如,*.txt,*.xla),在“打开”文件对话框中只显示与筛选条件相匹配的文件,默认为“所有文件(*.*),*.*”。参数FilterIndex指定缺省的文件筛选条件的索引值,从1到参数FileFilter中指定的筛选数,默认使用索引值为1的文件筛选条件。参数Title指定对话框的标题,默认显示“打开”。参数ButtonText仅用于Macintosh计算机。参数MultiSelect是一个Boolean值,指定能否选择多个文件,默认仅能够选择单个文件。下面的示例显示在文件类型中设置为文本文件(*.txt)的“打开”对话框,然后显示带有用户选择的信息的消息框。注意,文件并没有被打开。Dim fileToOpen As String fileToOpen = Application.GetOpenFilename(文本文件(*.txt),*.txt) If fileToOpen Then MsgBox 打开 & fileToOpen End If下面的示例获取多个工作簿:Sub TestGetFiles()Dim nIndex As IntegerDim vFiles As VariantDim strFileName As String 获取多个Excel文件 vFiles = GetExcelFiles(测试GetExcelFiles函数) 确保没有取消对话框. 如果用户取消对话框,函数返回False,而不是数组 If Not IsArray(vFiles) Then MsgBox 没有选择文件. Exit Sub End If 如果没有取消对话框,则遍历文件 For nIndex = 1 To UBound(vFiles) strFileName = strFileName & vbCrLf & vFiles(nIndex) Next nIndex 显示用户所选择的文件名称 MsgBox 用户已选择的文件如下: & vbCrLf & strFileNameEnd Sub允许选择多个文件返回含有文件名称的数组Function GetExcelFiles(sTitle As String) As VariantDim sFilter As StringDim bMultiSelect As Boolean sFilter = Excel工作簿(*.xlsx),*.xlsx bMultiSelect = True GetExcelFiles = Application.GetOpenFilename(FileFilter:=sFilter, Title:=sTitle, MultiSelect:=bMultiSelect)End Function当将GetOpenFilename方法的参数MultiSelect设置为True时,如果用户选择了文件,那么将返回一个变体类型的数组,且数组索引值基于1而不是0;如果用户取消了选择文件,那么返回False。在TestGetFiles过程的代码中,使用IsArray函数测试返回值是否是数组。如果使用vFiles=False来判断的话,当用户选择了文件时,由于返回的值为数组,则会导致运行时错误:类型不匹配。GetSaveAsFilename方法GetSaveAsFilename方法显示“另存为”对话框,允许用户指定一个文件名和需要保存文件的位置,但是实际上并没有保存文件。GetSaveAsFilename方法的语法如下(所有参数都是可选的):Application.GetSaveAsFilename(InitialFilename,FileFilter,FilterIndex,Title,ButtonText)参数InitialFilename为指定文件名的字符串,默认为活动工作簿的名称,若不需要指定初始文件名,则将其设置为空字符串(”);参数FileFilter是表示筛选条件的字符串,在“另存为”对话框只显示与筛选条件相匹配的文件,默认为“所有文件(*.*),*.*”;参数FilterIndex用来指定缺省的文件筛选条件的索引值,默认使用索引值为1的文件筛选条件;参数Title指定显示对话框标题的字符串文本,默认显示“另存为”;参数ButtonText仅用于Macintosh计算机。下面介绍一个综合示例,是Steven M. Hansen编写的,从完整的文件名字符串中分解出文件路径和文件名。Sub TestBreakdownName()Dim sPath As StringDim sName As StringDim sFileName As StringDim sMsg As String sFileName = Application.GetSaveAsFilename BreakdownName sFileName , sName, sPath sMsg = 文件名是: & sName & vbCrLf sMsg = sMsg & 文件路径是: & sPath MsgBox sMsg, vbOKOnlyEnd SubFunction GetShortName(sLongName As String) As StringDim sPath As StringDim sShortName As String BreakdownName sLongName , sShortName, sPath GetShortName = sShortNameEnd FunctionSub BreakdownName(sFullName As String, ByRef sName As String, ByRef sPath As String)Dim nPos As Integer 找出文件名从哪里开始 nPos = FileNamePosition(sFullName) If nPos 0 Then sName = Right(sFullName, Len(sFullName) - nPos) sPath = Left(sFullName, nPos - 1) Else 无效的文件名 End IfEnd Sub返回提供的完整文件名中文件名的位置或首字符索引值完整文件名包括路径和文件名例如:FileNamePosition(C:TestingTest.xlsx)=11Function FileNamePosition(sFullName As String) As IntegerDim bFound As BooleanDim nPosition As Integer bFound = False nPosition = Len(sFullName) Do While bFound = False 确保不是零长度字符串 If nPosition = 0 Then Exit Do 从右开始查找第一个 If Mid(sFullName, nPosition, 1) = Then bFound = True Else 从右至左 nPosition = nPosition - 1 End If Loop If bFound = False Then FileNamePosition = 0 Else FileNamePosition = nPosition End IfEnd Function除了运行TestBreakdownName过程获取文件名和文件路径外,还可以使用GetShortName函数仅获取文件名。此外,在Sub过程BreakdownName中使用了ByRef参数,即通过引用传递参数,这样传递给子过程的参数改变后,调用子过程的主过程中相应的参数也随之改变。InputBox方法InputBox方法提供了一种程序与用户之间进行简单的交互的方式,允许我们从用户处获得信息。该方法将显示一个对话框,提示用户输入某值。通过指定希望用户输入的数据类型,InputBox方法能够进行数据验证。InputBox方法的语法如下:InputBox(Prompt,Title,Default,Left,Top,HelpFile,HelpContextID,Type)其中:参数Prompt是在对话框中显示的消息。这里,可以提示用户您希望用户输入的数据类型。该参数是唯一的必需参数。参数Title是对话框顶部显示的标题。缺省使用应用程序名称。参数Default是对话框最初显示时的缺省值。参数Left和Top用于指定对话框的位置,这些值相对于屏幕的左上角且以磅为单位。如果忽略,则对话框将水平居中且距屏幕顶约1/3处。参数HelpFile和HelpContextId指定帮助文件,如果使用了这两个参数,那么在对话框中将出现帮助按钮。参数Type指定需要返回的数据类型。缺省为文本,允许的类型列于表1。表1:InputBox方法返回的数据类型值类型0公式。公式作为字符串被返回。这是仅有的必需的参数。1数值。也可以包括返回值的公式。2文本(字符串)4逻辑值(True或False)8单元格引用,作为Range对象16错误值,例如#N/A64值列表注意,如果Type为8,那么必须使用Set语句将结果赋值给Range对象,如下面的代码所示:Set myRange = Application.InputBox(Prompt:=示例, Type:=8)如果希望允许输入多种数据类型,那么可以使用上表中的任意数值组合。例如,如果要显示一个可以接受文本或数值的输入框,则可以将type的值设置为3(即1+2的结果)。如果输入了错误类型的数据,则显示错误消息并提示再次输入数据。如果单击“取消”按钮,则返回False。下面的示例提示用户输入希望打印活动工作表的份数(注意,type指定希望输入的是一个数值):Sub PrintActiveSheet()Dim TotalCopies As Long, NumCopies As LongDim sPrompt As String, sTitle As String sPrompt = 您想要多少副本? sTitle = 打印活动工作表 TotalCopies = Application.InputBox(Prompt:=sPrompt, Title:=sTitle, Default:=1, Type:=1) For NumCopies = 1 To TotalCopies ActiveSheet.PrintOut Next NumCopiesEnd Sub如果将InputBox方法的返回值赋给一个Variant型变量,则可以检测该值是否为False。如果要返回单元格区域,则使用像下面的代码会更好:Sub GetRange()Dim rng As RangeOn Error Resume Next Set rng = Application.InputBox(Prompt:=输入单元格区域, Type:=8) If rng Is Nothing Then MsgBox 操作取消 Else rng.Select End IfEnd Sub此时,必须使用Set语句将Range对象赋值给某对象变量,如果用户单击“取消”按钮则返回值False,Set语句将失败并提示运行时错误。使用On Error Resume Next语句避免运行时错误,然后检查是否产生了一个有效的区域。如果用户单击“确定”按钮,那么InputBox方法检查内置类型以确保将返回有效的区域,因此空区域表明单击了“取消”按钮。Run方法Run方法执行一个宏或调用一个函数。可以使用该方法运行由VBA或Excel宏语言编写的宏,或者运行动态链接库(DLL)里的函数或Excel加载项(XLL)。XLL是使用任何支持创建DLLs的编译器为Excel创建的加载项。Run方法的语法为:Run(Macro,Arg1,Arg30)参数Macro是要执行的宏或函数的名称,参数Arg1至Arg30是需要传递给宏或函数的一些参数。下面的示例使用Run方法调用一个过程,设置单元格区域中单元格的字体为粗体。当然,也可以使用Call方法获得相同的结果。Sub UseRunMethod()Dim wks As WorksheetDim rng As Range Set wks = Worksheets(Sheet2) Set rng = wks.Range(A1:A10) Application.Run MyProc, rng 也能够使用下面的语句完成相同的任务 Call MyProc(rng)End SubSub MyProc(rng As Range) With rng.Font .Bold = True End WithEnd SubApplication对象相关的事件Application对象也有一些事件,能够用于监视整个Excel应用程序的行为。要使用Application事件,必须启用事件监视。激活Application事件监视1、单击“插入类模块”,创建一个类。2、在属性中,将类的名称改为AppEventClass。3、在类的代码窗口,添加下面的代码:Public WithEvents Appl As Application现在,能够在应用程序中运用应用程序级事件。4、在代码窗口顶部左侧的对象列表中,选择Appl。5、在代码窗口顶部右侧的过程列表中,选择WorkbookOpen。此时,将为Appl_WorkbookOpen过程插入一对占位符。6、在过程中添加下面的语句:Private Sub Appl_WorkbookOpen(ByVal Wb As Workbook) MsgBox 已打开工作簿.End Sub7、重复上面的步骤插入Appl_WorkbookBeforeClose事件,并添加下面的语句:Private Sub Appl_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean) MsgBox 关闭工作簿.End Sub8、接下来,创建一个变量用于引用类模块中创建的Application对象。在工程资源管理器中,双击ThisWorkbook打开代码窗口。9、添加下面的语句。Dim ApplicationClass As New AppEventClass通过在ThisWorkbook代码窗口添加下面的语句,创建所声明的对象对Application对象的连接:Private Sub Workbook_Open() Set ApplicationClass.Appl = ApplicationEnd Sub10、保存并关闭该工作簿。11、现在,测试代码。打开该工作簿,将触发Appl_WorkbookOpen事件,显示相应的信息框。12、关闭该工作簿,将触发Appl_WorkbookBeforeClose事件,显示相应的信息框。13、切换回AppEventClass类模块并单击过程列表显示能够用于监控应用程序行为的一系列事件。理解这些事件如何被触发以及事件的顺序对理解应用程序是重要的。在类模块中添加其他的事件并插入消息框,然后试验不同的行为来看看何时触发某特定的事件。使用Application对象执行其它任务除了Application对象中最常用的对象外,您可能希望在Excel应用程序中执行一些其他任务。下面我们就来探讨这方面的内容。删除工作表而显示提示信息(DisplayAlerts属性)下面的示例首先关闭询问是否保存工作表的任何消息,接着删除工作表并打开警告消息。Sub DeleteSheet() Application.DisplayAlerts = False ActiveSheet.DeleteApplication.DisplayAlerts = TrueEnd Sub上述示例代码中使用了DisplayAlerts属性,将其值设置为False以自动执行Excel警告对话框中默认按钮相关的操作。设置DisplayAlerts属性的意图在于,运行宏时不必响应系统出现的警告而使执行过程中断。当然,在过程结束前,最好将Display
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电器分销合同协议书范本
- 策划赞助合作协议书范本
- 破坏房屋赔偿协议书范本
- 电梯轿厢清洁协议合同书
- 监控质保与售后合同范本
- 驾校学员培训合同协议书
- 项目工程挂靠协议书范本
- 环保投资股东协议书模板
- 煤矿合同续签协议书模板
- 权利质押反担保合同范本
- 外研版八年级上册英语期末复习:阅读理解 刷题练习题30篇(含答案解析)
- 退休延期留用岗位协议书
- 生物安全记录表
- DB34T 1708-2020 电站堵阀检验规程
- 《幼儿园保育教育质量评估指南》引领下的园本教研转向与新生态
- 四年级数学(小数加减运算)计算题专项练习与答案汇编
- 《老年护理学》考试复习题库(含答案)
- 第1章有理数单元同步练习题 2024-2025学年华东师大版数学七年级上册
- GB/T 29239-2024移动通信设备节能参数和测试方法基站
- 职业技术学校《服装工艺基础》课程标准
- 《Python编程案例教程》全套教学课件
评论
0/150
提交评论