vba创建html的属性,VBA对象、属性和⽅法
使⽤VBA,你可以创建⼯程控制Excel的许多东西,你同样也可以控制很多其它的应⽤程序。VB的伟⼤来⾃于它的控制和管理各种各样的对象的能⼒。但是,“对象”是什么呢?“对象”是你通过VBA控制的东西。⼯作簿,⼯作表,⼯作表⾥的单元格区域,图表或者⼯具条,这些只是⼀些⽤Excel时想要控制的东西的举例。这些东西就是对象。Excel含有超出⼀百种你可以通过不同⽅式操作的对象。
所有的VB对象都被分层归类。⼀些对象本⾝⼜可能含有其它的对象,例如,Excel时⼀个应⽤对象,这个应⽤对象包含其它对象,例如⼯作簿或者命令条。⼯作簿对象可能包含其它对象,如⼯作表或者图表。你将在本章种学习如何控制以下Excel对象:区域,窗⼝,⼯作表,⼯作簿和应⽤。我将“区域”列在了第⼀位置,有⼀个⾮常重要的原因,如果你不知道如何操作单元格区域的话,你基本上不能⽤电⼦表格来做什么。
某些对象看上去相似。如果你打开⼀个新⼯作簿,检查它的⼯作表,你不会发现什么不同。⼀组相似的对象被称为“集合”。例如,⼯作表的集合包含所有具体⼯作簿中的⼯作表;命令条的集合包含所有的⼯具条和菜单。集合同样是对象。Excel中使⽤得最频繁的集合是表(Sheets)集合,它代表所有的⼯作表和图表,还有⼯作簿集合,⼯作表集合以及窗⼝集合。当你使⽤集合时,相同的动作可以在这个集合中所有的对象上执⾏。
每⼀种对象都有⼀些特征供你描述。在VB⾥,这些对象的特征被称为“属性”。例如,⼯作簿对象有名称属性;区域对象有列,字体,公式,名称,⾏,样式和值等属性。这些对象属性是可以设置的。你通过设置对象的属性控制对象的外观和位置。对象属性⼀次只能设置为⼀个特定的值。例如,当前⼯作簿不可能同时有两个不同的名称。VB中最难理解的部分是有些属性同时⼜可以是对象。想想区域(Range)对象,你可以通过设置字体颜⾊来改变选定单元格的外观。但是,字体(Font)可以有不同的名称(Times New Roman, Arial, …),不同的字号(10,12,14,…)和不同的样式(粗体,斜体,下划线,…)。这些是字体的属性。如果字体有属性,那么字体也是对象。
属性真是了不起,让你改变对象的外观,但是,如何控制这些操作呢?你在使Excel为你执⾏任务之前,你需要知道另外⼀个术语。对象有⽅法。每⼀种你想要对象做的操作都被称为“⽅法”。最重要的VB⽅法是Add⽅法。你可以使⽤这个⽅法添加⼀个新⼯作簿或者⼯作表。
对象可以使⽤不同的⽅法。例如,区域(Range)对象有专门的⽅法让你清除单元格内容(ClearContents⽅法), 清除格式(ClearFormats⽅法)以及同时清除内容和格式(Clear⽅法)。还有让你选择,复制或移动对象的⽅法。⽅法有可选择的参数确定⽅法执⾏的具体⽅式。例如,⼯作簿(Workbook)对象有⼀个叫关闭(Close)的⽅法。你可以使⽤它关闭任何打开了的⼯作簿。如果⼯作簿有改动,Excel会弹出⼀个信息,问你是否要保存变化。你可以使⽤关闭⽅法和设定它的保存变化(SaveChanges)参数为假(False)来关闭这个⼯作簿并且不管它的任何变化。正如例⼦:
Workbooks("Chap01.XLS").Close SaveChanges:=False
学习对象,属性和⽅法当你学习新的事物时,理论会给你必须的背景,但是,你如何真正知道那是什么呢?⼤多数⼈习惯形象思维,为了使Excel对象易于理解,VB在线帮助提供了⼀个对象模型,请看接下来的附图。注意,Application对象位于树型图的最上端,它实际上代表Excel本⾝。其它对象在较低的层次。
假设你想要控制Range对象,在你能够控制任何Excel对象之前,你必须对它创建引⽤。为了获得下图中的Range对象,只要遵照下⾯⼏⾏代码。每次看到树型图中的线指向不同的层时,你只要巧妙地将线换成⼀个逗点运算符(停顿,英⽂状态下的句号)。这样,最终你会以下⾯的⽅式到达Range对象:
Application.Workbook.Worksheet.Range
你可以使⽤Excel对象树型图来寻到其它对象的路径,例如窗⼝(Window),批注(Comment),⾃动筛选(AutoFilter)或者绘图区(ChartArea)。分析对象模型是⼀个学习Excel对象的⾮常好的⽅法。你花在这⾥的时间,以后你开始编写VBA过程的时候,会给你加倍的回报。通常,你需要明确你引⽤的对象的名称。
现在,我们来点更具体的。假设你要清除单元格A4⾥的内容。⼿动做这个时,只要选择单元格A4然后
按下键盘上的Delete键就可以了。⽤VB做同样的操作,你⾸先需要知道如何使Excel选中了正确的单元格。单元格A4和其它的⼯作表单元格⼀样,是Range对象。VB没有Delete⽅法来清除单元格内容,取⽽代之的是ClearContents⽅法,例如:
Range("A4").ClearContents
注意在对象名称和⽅法之间的逗点运算符。这个指令去除单元格A4⾥的内容。然⽽,如何使Excel清除⼯作簿Chap02.xls第⼀个⼯作表⾥单元格A4的内容呢?我们仍然假设打开了好⼏个⼯作簿。
图2-4 Excel对象树型图
如果你不希望最后在错误的⼯作簿或⼯作表⾥删除了A4⾥的内容,那么你必须写下详细的指令,这样VB就知道在哪⾥这个单元格:
Application.Workbooks("Chap02.xls").Worksheets("Sheet1") .Range("A4").ClearContents
上⾯的指令应该写成⼀⾏,并且应该从右到左阅读:清除单元格A4⾥的内容,这个单元格在⼀个叫“Sheet1”的⼯作表⾥,⽽这个⼯作表⼜在⼀个叫“Chap02.xls”的⼯作簿⾥⾯,⼯作簿“Chap02.xls”⼜应该是Excel应⽤程序的⼀部分。注意,集合名称的后⾯带有⼀个字母“s”:Workbooks和Worksheets。所有引⽤的⼯作簿,⼯作表或单元格名称都必须⽤引号(英⽂状态的引号)包括起来。
如何到Excel对象树型图?选择Excel界⾯上的“帮助”- “Excel帮助”-“编程信息”-“微软ExcelVB参考”-“Excel对象模型”。(2002版有全局的对象模型,2003版好像没有这个。)除了Excel对象,你还可以使⽤Office,Forms和DAO,ADO对象模型。属于这些数据库(library)中的对象都可以⽤在Excel中,也可以⽤在Office家族中的其它应⽤软件中。
图2-6 Excel对象(Worksheet)
Excel在线帮助列出了Excel对象模型从早期版本以来的变化。许多对象,属性和⽅法都已经被更新
的,改进的特⾊所代替了。为了提供兼容性,被取代的对象已经被隐藏起来了(译者:它们仍然是
可⽤的)。打开VB编辑器窗⼝上的在线帮助,隐藏的对象同样可以在对象浏览器⾥到。如果你在
对象浏览器窗⼝上单击右键,你可以选择显⽰隐藏成员的选项。你将在以后的章节中学习如何使⽤
对象浏览器。
句法和⽂法既然现在你已经知道了VBA的⼀些基本组成要素(对象,属性和⽅法),是时间开始使⽤它们了。但是,你怎么将对象,属性和⽅法连接成正确的语⾔结构呢?每种语⾔都有语法规则,⼈们必须遵循语法以确保他们被理解了。⽆论你说的是英语,西班⽛语,法语还是其它语⾔,你在读,写的时候都必须遵从⼀定的规则。在编程中,我们使⽤“句法”(syntax)这个术语来更确切地明确它的语⾔规则。你可以在在线帮助或者在对象浏览器窗⼝查每个对象,属性或⽅法的句法。下⾯列出⼀些你必须的VB常⽤规则:
规则1:引⽤对象的属性
如果这个属性没有⾃变量,使⽤下⾯的句法:
Object.Property
对象是⼀个占位符,是你放置你想要进⼊的实际对象名称的地⽅。属性同样也是⼀个占位符,你可以在这⾥放置该对象的特点。例如:指向⼯作表中单元格A4中输⼊的值,见下述指令:
Range("A4").Value
注意对象名称和属性之间的句号。当你需要进⼊⼀个存在于多个其它对象⾥的对象的属性时,你必须按顺序地写上所有对象的名称,并且⽤句号运算符分开。例如:
ActiveSheet.Shapes(2).Line.Weight
这个例⼦指向当前⼯作表⾥图形(Shapes)集合⾥的第⼆个对象⾥的直线(Line)对象的粗细(Weight)属性。
有些属性要求⼀个或多个⾃变量。例如,使⽤偏移(Offset)属性,你可以选择⼀个和当前单元格相对位置的单元格。Offset属性需要两个⾃变量,第⼀个⾃变量为⾏号(rowOffset)第⼆个是列号(columnOffset)。
对象      属性  ⾃变量
ActiveCell.Offset(3,  2)
在上⾯的例⼦中,假设当前单元格是A1,Offset(3, 2)将会指向往下3⾏和往右两列的单元格,也就是单元格C4。因为,在括号内的⾃变量总是很难理解,通常操作是将它们的名称也列上,见下例:
ActiveCell.Offset(rowOffset:=3, columnOffset:=2)
注意,⾃变量名称后⾯总是跟着⼀个冒号和⼀个等于号(:=)。如果你使⽤带名称的⾃变量,你可以任意顺序地列出它们,上⾯的指令也可以写成这样:
ActiveCell.Offset(columnOffset:=2, rowOffset:=3)
改后的指令没有改变意思,你仍然指向单元格C4。然⽽,如果你改变ActiveCell.Offset(3, 2)中⾃变量的次序,结果你会指向D3,⽽不是C4。
规则2:改变对象的属性
Object.Property = Value
Value是⼀个新的你要赋给该对象属性的值。这个值可以是:⼀个数字
Range("A4").Value = 25
上⾯的指令在当前⼯作表的单元格A4⾥输⼊数字25在引号⾥的⽂本
ActiveCell.Font.Name = "Times New Roman"
上⾯的指令将当前单元格字体改为Times New Roman
逻辑值(True或False)
ActiveCell.Font.Bold = True
上⾯的指令设置当前单元格的字体为粗体。
规则3:返回对象属性的当前值
Variable = Object.Property
Variable(变量)是VB将要储存属性设置的地⽅的名称。
变量对象            属性
CellValue =  Range(“A4”).Value
上⾯的指令将当前A4单元格⾥的值保存到变量CellValue。
规则4:指向对象的⽅法
如果该⽅法没有⾃变量,那么句法应该是:
Object.Method
对象是⼀个占位符,是你放置你想要进⼊的实际对象名称的地⽅。⽅法同样也是⼀个占位符,你可以在这⾥放置要对该对象的进⾏的操作的名称。例如,可以使⽤下述指令来清除单元格A4的格式(应该是内容):
对象              ⽅法
Range("A4").ClearContents
如果该⽅法可以使⽤⾃变量来限制,那么句法为:
Object.Method (argument1, argument2, … argumentN)
例如,使⽤GoTo⽅法,你可以快速地选择⼯作表⾥的任何区域。GoTo⽅法的句法为:
Object.GoTo(Reference, Scroll)      ‘对象.GoTo(参照, 窗⼝滚动)
Reference⾃变量是⽬标单元格或者区域,Scroll⾃变量可以设定为真(True)让Excel窗⼝滚动到该⽬标
vba编程技巧地址出现在窗⼝的左上⾓;或者设定为假(False),窗⼝不滚动(系统默认为False)。
例如,下⾯的VBA语句选择⼯作表Sheet1⾥的单元格P100,并且窗⼝滚动:
Application.GoTo _
Reference:=Worksheets("Sheet1").Range("P100"), _
Scroll:=True
上⾯的指令没有固定在⼀⾏,使⽤了⼀条特殊的线(下划线)将它分为⼏段。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。