EXCEL 对象模型一览表
- 格式:xls
- 大小:2.11 MB
- 文档页数:8
划重点!告诉你什么是ExcelVBA对象模型及如何引用对象excelperfect标签:VBA,对象模型要编写Excel VBA程序,必须知道对象。
可以认为,VBA基于面向对象编程,这意味着VBA程序主要是在处理(或操控)对象。
因此,我们要掌握ExcelVBA编程,必须理解:1.什么是对象2.如何操控VBA对象3.Excel VBA对象模型刚开始接触对象和对象模型的朋友,可能会被一些概念搞糊涂,这是正常的,随着不断地学习和使用,你的理解会越来越深入,这些概念也会逐渐清晰起来。
基本说来,Excel VBA对象模型是编程时可以使用的对象的层次结构,它使得引用要操控的对象更容易。
对象层次结构如下:层级1:在最顶端,只有一个对象。
层级2:层次结构顶部的对象包含的一些对象。
层级3:层级2中的对象可能包含的一些对象。
层级4:层级3中的对象可能包含的一些对象。
…对象可能包含其他对象。
该过程会重复,直到到达不包含任何其他对象的对象。
通常,层次结构顶部的对象是Application对象,即层级1的对象是应用程序本身。
对于Excel来说,Application对象就是Excel本身。
Application对象包含其他VBA对象。
Excel的Application对象包含的一些主要对象为:•AddIns,包含所有的加载项对象。
•Windows,包含应用程序所有Window对象。
•Workbooks,包含所有Workbook对象。
这些VBA对象中的每一个又包含其他对象。
例如,Workbook对象中包含的一些VBA对象如下:•Charts,包含Chart对象。
•Names,包含Name对象•VBProjects,代表打开的项目。
•Windows,包含指定Excel工作簿中的Window对象。
•Worksheets,包含Worksheet对象。
同样,这些VBA对象包含其他对象。
例如Worksheet对象包含下列VBA对象:•ChartObjects,包含ChartObject对象。
Excel-VBA常⽤对象(Application、Workbook、Worksheet、。
⼀、对象模型在VBE中“帮助(H)”——“Microsoft Visual Basic 帮助(H) F1”——“Visual Basic 语⾔参考”——“函数” 或者在VBE下快捷键“F1”地址:https:///zh-cn/office/vba/api/overview/excel/object-model⼆、Application对象(Excel顶层对象)1、ScreenUpdating属性是否控制屏幕更新,False表⽰关闭屏幕更新,True表⽰打开屏幕更新设置ScreenUpdating=False 关闭屏幕更新,将看不到程序的执⾏过程,可以加快程序的执⾏速度,让程序显得更直观,专业。
⽰例(为关闭屏幕更新下,会弹出对话框):Sub InputTest()Cells.ClearContents '清除表中所有数据Range("A1:A10") = 100MsgBox"刚才在A1:A10输⼊数值100,你能看到结果吗?"Range("B1:B10") = 200MsgBox"刚才在B1:B10输⼊数值200,你能看到结果吗?"End Sub⽰例(关闭屏幕更新,看不到执⾏过程,程序最终执⾏完成才能看到最终结果)Sub InputTest()Cells.ClearContents '清除表中所有数据Application.ScreenUpdating = False'关闭屏幕更新Range("A1:A10") = 100MsgBox"刚才在A1:A10输⼊数值100,你能看到结果吗?"Range("B1:B10") = 200MsgBox"刚才在B1:B10输⼊数值200,你能看到结果吗?"Application.ScreenUpdating = True'恢复屏幕更新End Sub2、DisplayAlterts属性是否显⽰警告对话框,False为不显⽰,True为显⽰Sub delSht()Dim sht As WorksheetApplication.DisplayAlerts = False'不显⽰警告信息For Each sht In WorksheetsIf = Then'判断sht是不是活动⼯作表sht.Delete '删除sht代表的⼯作表End IfNextApplication.DisplayAlerts = True'恢复显⽰警告信息End Sub3、EnableEvents属性启⽤或禁⽤事件,False为禁⽤(不让事件发⽣),True为启⽤什么是事件?能被Excel认识的⼀个操作动作,例如“打开⼯作簿”、“关闭⼯作簿”等⽰例1:编写⼀个程序,当选中⼯作表的单元格时,⾃动在单元格中写⼊该单元格的地址End Sub⽰例2:选中活动单元格,记录对应单元格地址,并将活动单元格向下移动⼀个单元格Private Sub Worksheet_SelectionChange(ByVal Target As Range)Target.Value = Target.AddressApplication.EnableEvents = False'禁⽤事件Target.Offset(1, 0).Select '选中活动单元格下⾯的⼀个单元格Application.EnableEvents = True'启⽤事件End Sub4、WorksheetFunction属性使⽤WorksheetFunction调⽤Excel内置函数⽰例1:统计A1:A50单元格中数值⼤于1000的单元格有多少个?Sub CountTest()Dim mycount As Integer, rng As RangeFor Each rng In Range("A1:B50")If rng.Value > 1000Then mycount = mycount + 1NextMsgBox"A1:B50中⼤于1000的单元格个数为:" & mycountEnd Sub⽰例2:统计A1:A50单元格中数值⼤于1000的单元格有多少个?使⽤COUNTIF函数Sub CountTest()Dim mycount As Integermycount = Application.WorksheetFunction.CountIf(Range("A1:B50"), ">1000")MsgBox"A1:B50中⼤于1000的单元格个数为:" & mycountEnd Sub5、给Excel梳妆打扮Excel⼯作表界⾯相关命令Excel界⾯6、Application的常⽤属性三、Workbook对象Workbook⼯作簿Workbooks⼯作簿集合1、怎么引⽤⼯作簿引⽤⼯作簿,就是指明⼯作簿的位置及名称,共有两种⽅式⽅式⼀:利⽤索引号引⽤⼯作簿,Workbook.Item(3),这⾥的Item可以省略,即Workbook(3)⽅式⼆:利⽤⼯作簿名称引⽤,Workbook("Book1")或Workbook("Book1.xls"),如果本地⽂件显⽰拓展名(且⽂件已经保存),则⽂件名必须带拓展名,否则会报错。
[分享]ExcelVBA编程系列之对象模型(2)初步理解和使用Excel对象模型[摘要]本文介绍了Excel对象模型及相关知识的基本概念,告诉您如何在VBA代码中使用与处理对象和集合。
主要包括Excel 对象模型的介绍,对象(集合)的概念和如何引用,设置对象变量,对象的方法和属性,对象的事件,用With…End With语句和For Each…Next语句处理对象和集合,以及如何获得帮助等基础知识。
说明对本文中的VBA语句和程序,您可以在将它们复制/粘贴或输入到您的VBE编辑器中的代码模块中后,进行测试。
具体方法为:在Excel工具菜单中选择“工具——宏——Visual Basic编辑器”命令或按Alt+F11组合键,打开VBE编辑器;然后再VBE编辑器中选择菜单“插入——模块”,将代码输入或粘贴到模块程序中,选择“运行宏”命令或按F5快捷键运行测试代码。
本文中的提示是您在编写或使用VBA代码时要注意的地方或给您的建议。
Excel对象模型简介在介绍Excel对象模型之前,让我们先来看一个简单的例子。
大多数工厂都是按这样的结构进行设置的:最上层为工厂总部,第二层次分为各个车间,在车间下面又分各班组。
就这样组织在一起,形成了一个工厂体系。
Excel对象模型与此相似,看起来复杂但实质上很简单清晰。
提示任何看起来复杂的东西其实都是由一些简单的部分组成的,或者其实它本身就比较简单。
Excel的对象模型是通过层次结构很有逻辑地组织在一起的,一个对象可以是其它对象的容器,可以包含其它的对象,而这些对象又包含其它的对象。
位于顶层的是Application对象,也就是Excel应用程序本身,它包含Excel中的其它的对象,如Workbook对象;一个Workbook对象包含其它一些对象,如Worksheet对象;而一个Worksheet对象又可以包含其它对象,如Range对象,等等。
这就是Excel的对象模型。
例如,Range对象在Excel对象模型中的位置为:Application对象Workbook对象Worksheet对象Range对象知道了某对象在对象模型层次结构中的位置,就可以用VBA代码方便地引用该对象,从而对该对象进行操作,并以特定的方式组织这些对象,使Excel能根据您的需要自动化地完成工作任务。
第4章Range(单元格)对象选取单元格[A1].Select[A1:D8].Select[A1:D8,A20:C25,F6:G10].Select[A:A].Select[A:D].Select[A:A,C:C,H:H].Select[1:1].Select[5:20].Select[1:1,3:3,5:5].SelectCells.Select选取与某值不同的单元格S heets(1).Columns("A").ColumnDifferences(Comparison:合并单元格区域Union(Range("A1:B10"),Range("D1:E10"),Range("G1:G10"))Range(Range("A1:B10"),Range("D1:E10"),Range("G1:G10"))活动单元格ActiveCell已用的单元格edRange空行围成的单元格[a1].CurrentRegion.Rows.Cells可视单元格区域ActiveWindow.VisibleRange公式引用的单元格[a1].PrecedentsApplication.Evaluate([a1].Formula)从属单元格[a1].Dependents特殊单元格选取Activesheet.cells.SpecialCells(x,y).Selectx为:xlCellTypeAllFormatConditionsxlCellTypeAllValidationxlCellTypeBlanksxlCellTypeCommentsxlCellTypeLastCellxlCellTypeVisible可见xlCellTypeSameFormatConditionsxlCellTypeSameValidationxlCellTypeConstantsxlCellTypeFormulas当x为xlCellTypeConstants或xlCellTypeFormulas时y为:xlErrorxlLogicalxlNumbersxlTextValues偏移单元格[a1].Offset(x,y)调整单元格Resize(x,y)单元格总数Sheet(1).Cells.CountA列最后非空一行Range("A65536").End(xlUp).Row第一行最后非空一列Range("IV1").End(xlToLeft).Column隐藏行列[a1].EntireRow.Hidden=True/False[a1].EntireColumn.Hidden=True/FalseRows(1).Hidden=True/FalseColumns(1).Hidden=True/FalseRows.Hidden=True/FalseCells.Rows.Hidden=True/FalseColumns.Hidden=True/False设置行高列宽[A1].RowHeight=n[A1].ColumnWidth=n设置列宽行高(厘米)Application.CentimetersToPoints(1)Application.CentimetersToPoints(2)设置列宽行高(英寸)Application.InchesToPoints(1)Application.InchesToPoints(0.5)自动调整单元格[A1].EntireColumn.AutoFit[A1].EntireRow.AutoFit设置滚动区域Sheets(1).ScrollArea=[a1]Sheets(1).ScrollArea=""输入公式[a1].Formula="=TODAY()"是否有公式单元格[a1].HasFormula=True/False是否有数组公式单元格[a1].HasArray=True/False设置为数组公式[A1].FormulaArray="数组公式"单元格引用样式[A1].Address[A1].Address(False,False)[A1].Address(RowAbsolute:=False)[A1].Address(ColumnAbsolute:=False)[A1].Address(ReferenceStyle:=xlR1C1)[A1].Address(False,False,ReferenceStyle:=xlR1C1)[A1].Address(RowAbsolute:=False,ReferenceStyle:=xlR1C1)[A1].Address(ColumnAbsolute:=False,ReferenceStyle:=x单元格剪切[A1].CutDestination:=[b1]单元格复制[A1].CopyDestination:=[b1][A1].Copy[b1]将单元格复制成图片[A1].CopyPicturexlScreen,xlBitmap[B1].Select[B1].Parent.Pictures.Paste选择性粘贴[A1].Copy[B1].PasteSpecialPaste:=x,Operation:=y,SkipBlanks:=True/Falsex为:xlPasteAllxlPasteAllExceptBordersxlPasteColumnWidthsxlPasteCommentsxlPasteFormatsxlPasteFormulasxlPasteFormulasAndNumberFormatsxlPasteValidationxlPasteValuesxlPasteValuesAndNumberFormatsy为:xlPasteSpecialOperationNonexlPasteSpecialOperationAddxlPasteSpecialOperationSubtractxlPasteSpecialOperationMultiplyxlPasteSpecialOperationDivide插入行列[A1].InsertShift:=xlToRight[A1].InsertShift:=xlDown[A1].EntireRow.InsertShift:=xlShiftDown[A1].EntireColumn.InsertShift:=xlShiftToRight删除行列[A1].DeleteShift:=xlUp[A1].DeleteShift:=xlToLeft[A1].EntireRow.DeleteShift:=xlUp[A1].EntireColumn.DeleteShift:=xlToLeft清除单元格[A1].ClearFormats[A1].ClearContents[A1].ClearComments[A1].ClearNotes[A1].Clear拼音指南[a1]="拼音"[a1].Characters(1,3).PhoneticCharacters="pinyin"[a1].Phonetic.Visible=True批注设置With[a1].Comment.Delete.AddComment.Text/"批注内容".Comment.Visible=False.Comment.TextText:="插入内容",Start:=1,EndWith[a1].NoteText超链接设置Sheets(1).Hyperlinks.DeleteSheets(1).Hyperlinks.AddAnchor:=[a1],Address:="",Sheets(1).Hyperlinks.AddAnchor:=[a1],Address:="路径",ScreenTi 数据有效性设置[a1].Validation.AddType:=x,AlertStyle:=_xlValidAlertStop,Operator:=y,Formula1:="100"x为:xlValidateWholeNumberxlValidateDecimalxlValidateDatexlValidateTimexlValidateTextLengthxlValidateListy=xlEqual,Formula1:="1,2,3,4,5,6,7,8,9,10,11,12"y=xlBetween,Formula1:="=$D$1:$D$10"y为:xlBetween后面加:Formul2:="1000"xlGreaterxlLessxlGreaterEqualxlLessEqualxlNotEqualxlEqual.IgnoreBlank=True.InCellDropdown=True.InputTitle="整数".ErrorTitle="数据错误".InputMessage="请输入整数".ErrorMessage="数据超出了范围".IMEMode=xlIMEModeOff.ShowInput=True.ShowError=True单元格填充设置[A1:A20].Cells(1).Value=x[A1:A20].Cells(1).AutoFillDestination:=[A1:A20],Type:=yy为:xlFillDaysx为日期型xlFillFormatsxlFillSeriesx为数值/公式xlFillWeekdaysx为日期型xlGrowthTrendxlFillCopyxlFillDefaultxlFillMonthsx为日期型xlFillValuesx为数值/公式xlFillYearsx为日期型xlLinearTrend单元格数字设置[a1].NumberFormatLocal=xx为:G/通用格式0_#,##0.00_);[红色](#,##0.00)yyyy-m-dh:mm:ss# ?/?##0.0E+0@[DBNum1][$-804]G/通用格式[DBNum2][$-804]G/通用格式单元格对齐设置[A1].HorizontalAlignment=xx为:xlHAlignLeftxlHAlignRightxlHAlignCenterxlHAlignFillxlHAlignCenterAcrossSelectionxlHAlignDistributedxlHAlignGeneralxlHAlignJustify[A1].VerticalAlignment=xx为:xlVAlignCenterxlVAlignJustifyxlVAlignBottomxlVAlignDistributedxlVAlignTop[A1].Orientation=0°~360°[A1].AddIndent=True[A1].WrapText=True[A1].ShrinkToFit=True[a1:a2].Merge[a1:a2].UnMerge[a1].MergeCells=True单元格字体设置[a1]字体名称#VALUE![a1].Font.Size=n[a1].Font.ColorIndex=n[a1].Font.Underline=xx为:xlUnderlineStyleNonexlUnderlineStyleSinglexlUnderlineStyleDoublexlUnderlineStyleSingleAccountingxlUnderlineStyleDoubleAccounting[a1].Font.Strikethrough=True/False[a1].Font.Subscript=True/False[a1].Font.Superscript=True/False 单元格边框设置[a1].Borders(x).ColorIndex=n[a1].Borders(x).LineStyle=y[a1].Borders(x).Weight=zx为:xlEdgeTopxlEdgeBottomxlEdgeLeftxlEdgeRightxlDiagonalDownxlDiagonalUpxlInsideHorizontalxlInsideVerticaly为:xlContinuousxlDoublexlDashxlDashDotxlDashDotDotxlDotxlSlantDashDotxlLineStyleNonez为:xlHairlinexlThinxlMediumxlThick单元格图案设置[a1].Interior.ColorIndex=n[a1].Interior.Pattern=n[a1].Interior.PatternColorIndex=n 单元格保护设置[a1].Locked=True/False[a1].FormulaHidden=True/Falseison:=Sheets(1).[A1]).Select nge("G1:G10"))nge("G1:G10"))ulas时y为:=xlR1C1)le:=xlR1C1)ks:=True/False,Transpose:=True/False路径",ScreenTip:="屏幕文字提示",Type:=y。
excel 对象层次结构Excel对象层次结构是指Excel中各个对象之间的关系和层次。
在Excel中,对象层次结构包括工作簿(Workbook)、工作表(Worksheet)、单元格(Cell)、行(Row)和列(Column)等。
首先是工作簿(Workbook),它是Excel文件的最高层次对象。
一个Excel文件可以包含多个工作簿,每个工作簿可以包含多个工作表。
其次是工作表(Worksheet),它是工作簿的子对象。
一个工作簿可以包含多个工作表,每个工作表由行和列组成,形成一个二维表格的结构。
在工作表中,最基本的对象是单元格(Cell)。
每个单元格由一个字母和一个数字组成,字母代表列,数字代表行,例如A1、B2等。
单元格是Excel中最小的数据单位,可以用于存放文本、数值、日期、公式等类型的数据。
单元格所在的行(Row)和列(Column)也是Excel的对象。
行是由一系列单元格组成的水平排列,用数字表示,例如第1行、第2行等。
列是由一系列单元格组成的垂直排列,用字母表示,例如A列、B列等。
行和列可以用来调整单元格的布局和样式。
除了上述对象之外,Excel还有其他一些对象,如图表、PivotTable和宏等。
图表(Chart)是用来可视化数据的对象,可以将数据以柱状图、折线图、饼图等形式展示出来。
PivotTable是一种数据透视表,可以对数据进行汇总和分析。
宏(Macro)是一段用VBA语言编写的程序代码,可以实现自动化操作和批量处理。
在Excel对象层次结构中,各个对象之间存在一定的关系。
工作簿包含工作表,工作表包含行和列,行和列包含单元格。
可以通过操作这些对象,来实现对Excel文件的创建、编辑和处理。
Excel对象层次结构包括工作簿、工作表、单元格、行和列等对象,它们之间存在一定的关系和层次。
通过对这些对象的操作,可以实现对Excel文件的各种操作和处理。
掌握Excel对象层次结构的概念和使用方法,可以提高Excel的应用效率和数据处理能力。
VBA的对象模型介绍VBA(Visual Basic for Applications)是一种用于自动化任务和创建宏的编程语言,广泛应用于Microsoft Office套件中的各种应用程序,如Excel、Word和PowerPoint等。
在VBA中,对象模型是一个关键概念,它允许我们通过与应用程序中的对象进行交互和操作,实现自动化和定制化的功能。
本文将介绍VBA对象模型的基本概念及其在几个常用的应用程序中的应用。
1. VBA对象模型的基本概念VBA对象模型是一种层次结构,它描述了一个应用程序中的对象及其之间的关系。
在VBA中,每个应用程序都有一个顶级对象,称为Application对象,它是其他对象的容器。
每个对象都有一组属性和方法,我们可以使用这些属性和方法来操作对象,改变其状态或执行特定的功能。
2. Excel中的VBA对象模型在Excel中,VBA对象模型允许我们与工作簿、工作表、单元格和图表等进行交互。
以下是Excel中一些重要的对象:- Application对象:代表整个Excel应用程序,它是VBA对象模型的顶级对象。
- Workbook对象:代表一个Excel工作簿,可以包含多个工作表。
- Worksheet对象:代表一个Excel工作表,我们可以通过Worksheet对象来操作其中的单元格、列、行等。
- Range对象:代表一个单元格范围,可以通过它来访问和操作Excel中的数据。
通过使用这些对象的属性和方法,我们可以实现自动化的数据导入、计算、格式化和报告生成等任务。
3. Word中的VBA对象模型在Word中,VBA对象模型允许我们与文档、段落、表格和书签等进行交互。
以下是Word中一些重要的对象:- Application对象:代表整个Word应用程序,它是VBA对象模型的顶级对象。
- Document对象:代表一个Word文档,我们可以通过Document对象来操作其中的内容、样式和格式等。