Excel-VBA常⽤对象(Application、Workbook、Worksheet、。
。。
⼀、对象模型
在VBE中“帮助(H)”——“Microsoft Visual Basic 帮助(H) F1”——“Visual Basic 语⾔参考”——“函数” 或者在VBE下快捷键“F1”
地址:docs.microsoft/zh-cn/office/vba/api/overview/excel/object-model
⼆、Application对象(Excel顶层对象)
vba 字符串函数1、ScreenUpdating属性
是否控制屏幕更新,False表⽰关闭屏幕更新,True表⽰打开屏幕更新
设置ScreenUpdating=False 关闭屏幕更新,将看不到程序的执⾏过程,可以加快程序的执⾏速度,让程序显得更直观,专业。
⽰例(为关闭屏幕更新下,会弹出对话框):
Sub InputTest()
Cells.ClearContents '清除表中所有数据
Range("A1:A10") = 100
MsgBox"刚才在A1:A10输⼊数值100,你能看到结果吗?"
Range("B1:B10") = 200
MsgBox"刚才在B1:B10输⼊数值200,你能看到结果吗?"
End Sub
⽰例(关闭屏幕更新,看不到执⾏过程,程序最终执⾏完成才能看到最终结果)
Sub InputTest()
Cells.ClearContents '清除表中所有数据
Application.ScreenUpdating = False'关闭屏幕更新
Range("A1:A10") = 100
MsgBox"刚才在A1:A10输⼊数值100,你能看到结果吗?"
Range("B1:B10") = 200
MsgBox"刚才在B1:B10输⼊数值200,你能看到结果吗?"
Application.ScreenUpdating = True'恢复屏幕更新
End Sub
2、DisplayAlterts属性
是否显⽰警告对话框,False为不显⽰,True为显⽰
Sub delSht()
Dim sht As Worksheet
Application.DisplayAlerts = False'不显⽰警告信息
For Each sht In Worksheets
If sht.Name = ActiveSheet.Name Then'判断sht是不是活动⼯作表
sht.Delete '删除sht代表的⼯作表
End If
Next
Application.DisplayAlerts = True'恢复显⽰警告信息
End Sub
3、EnableEvents属性
启⽤或禁⽤事件,False为禁⽤(不让事件发⽣),True为启⽤
什么是事件?能被Excel认识的⼀个操作动作,例如“打开⼯作簿”、“关闭⼯作簿”等
⽰例1:编写⼀个程序,当选中⼯作表的单元格时,⾃动在单元格中写⼊该单元格的地址
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Target.Address
End Sub
⽰例2:选中活动单元格,记录对应单元格地址,并将活动单元格向下移动⼀个单元格Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.Value = Target.Address
Application.EnableEvents = False'禁⽤事件
Target.Offset(1, 0).Select '选中活动单元格下⾯的⼀个单元格
Application.EnableEvents = True'启⽤事件
End Sub
4、WorksheetFunction属性
使⽤WorksheetFunction调⽤Excel内置函数
⽰例1:统计A1:A50单元格中数值⼤于1000的单元格有多少个?
Sub CountTest()
Dim mycount As Integer, rng As Range
For Each rng In Range("A1:B50")
If rng.Value > 1000Then mycount = mycount + 1
Next
MsgBox"A1:B50中⼤于1000的单元格个数为:" & mycount
End Sub
⽰例2:统计A1:A50单元格中数值⼤于1000的单元格有多少个?使⽤COUNTIF函数Sub CountTest()
Dim mycount As Integer
mycount = Application.WorksheetFunction.CountIf(Range("A1:B50"), ">1000")
MsgBox"A1:B50中⼤于1000的单元格个数为:" & mycount
End Sub
5、给Excel梳妆打扮
Excel⼯作表界⾯相关命令
Excel界⾯
6、Application的常⽤属性
三、Workbook对象
Workbook⼯作簿
Workbooks⼯作簿集合
1、怎么引⽤⼯作簿
引⽤⼯作簿,就是指明⼯作簿的位置及名称,共有两种⽅式
⽅式⼀:利⽤索引号引⽤⼯作簿,Workbook.Item(3),这⾥的Item可以省略,即Workbook(3)
⽅式⼆:利⽤⼯作簿名称引⽤,Workbook("Book1")或Workbook("Book1.xls"),如果本地⽂件显⽰拓展名(且⽂件已经保存),则⽂件名必须带拓展名,否则会报错。
2、Workbook名⽚信息
Sub wbMsg()
Range("B2") = ThisWorkbook.Name '返回当前⼯作簿名称练习 -副本.xlsm
Range("B3") = ThisWorkbook.Path '返回当前⼯作簿路径 C:\Users\ThinkPad\Desktop
Range("B4") = ThisWorkbook.FullName '返回当期⼯作簿带名称的路径 C:\Users\ThinkPad\Desktop\练习 - 副本.xlsm
End Sub
3、创建⼯作簿
使⽤⽅法:Workbooks.Add
如果不带任何参数,将创建包含⼀定数⽬空⽩⼯作表的新⼯作簿(数⽬由SheetsInNewWorkbook属性决定)也可以给Add⽅法设置参数(参数表⽰现有Excel名称的字符串,选⽤该参数,新建的⼯作簿将以该⽂件作为模板)
Workbooks.Add "C:\Program Files\Microsoft Office\Templates\2052\ADDRESS\ADDRESS.XLS"
也可以通过参数指定新建⼯作簿中包含的⼯作类型
Workbooks.Add xlWBATChart '新建图表⼯作表
Excel⼀共有4种类型的⼯作表
可以在插⼊对话框⾥看到(选中⼯作表名称——⿏标右键单击——插⼊——即可显⽰),如图(包含参数说明):
4、打开⼯作簿
使⽤Workbooks的Open⽅法(参数名要写含路径的名称)
Sub OpenFile()
Workbooks.Open Filename:="F:\Book1.xls"
End Sub
参数名成可以省略不写(Open除了Filename参数外,还有14个参数,让⽤户决定以何种⽅式打开指定的⽂件,可以通过系统的帮助来查看更多的信息)
Sub OpenFile()
Workbooks.Open "F:\Book1.xls"
End Sub
5、激活⼯作簿
同事打开多个⼯作簿,但是同⼀时间只能有⼀个窗⼝是活动的,调⽤Workbooks对象的Active⽅法可以激活⼀个⼯作簿。
Sub JhWb()
Workbooks("Book1.xls").Activate '激活⼯作簿
End Sub
6、保存⼯作簿
保存⼯作簿调⽤Workbooks的Save⽅法
Sub SaveWb()
ThisWorkbook.Save '保存代码所在的⼯作簿
End Sub
如果想将⽂件另存为⼀个新的⽂件,或者第⼀次保存⼀个新建的⼯作簿,就⽤SaveAs⽅法。
参数指定⽂件保存的路径及⽂件名如果省略路径,则默认将⽂件保存在当前⽂件夹中
Sub SaveWb()
ThisWorkbook.SaveAs Filename:="D:\test.xls"
End Sub
使⽤SaveAs⽅法将⼯作簿另存为新⽂件后,将⾃动关闭原⽂件,打开新⽂件,如果希望继续保留原⽂件不打开新⽂件,可以⽤SaveCopyAs⽅法
Sub SaveWb()
ThisWorkbook.SaveCopyAs Filename:="D:\test.xls"
End Sub
7、关闭⼯作簿
关闭⼯作簿使⽤Workbooks的Close⽅法,如果不带参数,则关闭所有打开的⼯作簿
Sub CloseWb()
Workbooks.Close '关闭所有打开的⼯作簿
End Sub
如果想关闭指定的⼯作簿,需要指定参数
Sub CloseWb()
Workbooks("Book1.xls").Close '关闭Book1.xls
End Sub
如果关闭之前被更改过的内容没有保存,关闭⼯作簿前Excel会询问⽤户是否保存更改,如果不想显⽰该对话框,可以给Close⽅法设置参数:
Sub CloseWb()
Workbooks("Book1.xls").Close savechanges:=True'关闭并保存Book1.xls
End Sub
关闭并保存的参数savechanges也可以省略不写:
Sub CloseWb()
Workbooks("Book1.xls").Close True'关闭Book1.xls
End Sub
8、ThisWorkbook与ActiveWorkbook
同是Application对象的属性,同是返回Workbook对象,但⼆者并不是等同的。
ThisWorkbook是对程序所在的⼯作簿的引⽤
ActiveWorkbook是对活动⼯作簿的引⽤
新建的⼯作簿总会成为活动⼯作簿
Sub wb()
Workbooks.Add
MsgBox"代码所在的⼯作簿为:" & ThisWorkbook.Name & Chr(13) _
& "当前活动⼯作簿为:" & ActiveWorkbook.Name
ActiveWorkbook.Close savechanges:=False
End Sub
四、Worksheet对象
Worksheet表⽰⼀张普通的⼯作表,Worksheets表⽰多个Worksheet对象的集合。
1、引⽤⼯作表
可以使⽤⼯作表的索引号或者标签名称引⽤它
Worksheets.Item (1) '引⽤⼯作表⾥的第⼀张⼯作表
Worksheets (1) '引⽤⼯作表⾥的第⼀张⼯作表
Worksheets ("Sheet1") '引⽤⼯作簿⾥标签名称为"Sheet1"的⼯作表
因为代码名称只能在【属性窗⼝】⾥修改,不会随着⼯作表标签名称或索引号的变化⽽变化。因此,当⼯作表的索引号或标签名称经常变化时,使⽤代码名称引⽤⼯作表会更⽅便。
使⽤代码名称引⽤⼯作表,只需直接写代码名称
例如:第⼀张⼯作表的A1单元格输⼊100,代码为:Sheet1.Range("A1")=100
查看⼯作表的代码名称,可以读取它的CodeName属性,如果想知道活动⼯作表的代码名称,代码为:
Sub ShowShtCode()
MsgBox ActiveSheet.CodeName
End Sub
2、新建⼯作表
新建⼯作表使⽤Worksheets的Add⽅法
不带任何参数,将在活动⼯作表新建⼀张⼯作表
Worksheets.Add
可以⽤参数给新建的⼯作表指定位置
Worksheets.Add before:=Worksheets(1) '在第⼀张⼯作表前插⼊⼀张新的⼯作表
Worksheets.Add after:=Worksheets(1) ‘在第⼀张⼯作表后插⼊⼀张新的⼯作表
还可以同时插⼊多张⼯作表
Worksheets.Add Count:=3 '在活动⼯作表前插⼊3张⼯作表,Count参数的缺省值为1
可以同时使⽤多个参数,不同参数之间⽤英⽂逗号隔开
Sub shtAdd()
Worksheets.Add after:=Worksheets(1), Count:=3
End Sub
在最后⼀张⼯作表后插⼊两张⼯作表
Sub shtAdd()
'在最后⼀个⼯作表后插⼊两张⼯作表
Worksheets.Add before:=Worksheets(Worksheets.Count), Count:=2
End Sub
Add⽅法有哪些参数?请看VBE的提⽰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论