1、VBA学习资料VBA帮助(摘自Office2000 VBA帮助)一、VBA入门知识1、激活工作簿2、创建新工作簿3、打开工作簿4、用编号引用工作表5、用名称引用工作表6、将文档保存为 Web 页7、用 A1 样式的记号引用单元格和单元格区域8、用编号引用单元格9、引用行或列10、用快捷记号引用单元格11、引用命名单元格区域12、按相对于其他单元格的方式来引用单元格13、用 Range 对象引用单元格14、引用工作表上的所有单元格15、引用若干单元格区域16、在单元格区域中循环17、选定和激活单元格18、处理三维区域19、处理活动单元格20、在工作表上使用 ActiveX 控件21、在文档中使用
2、 ActiveX 控件22、创建自定义对话框23、在窗体上使用 Microsoft Office Web 组件24、内置对话框参数表25、使用 Microsoft Excel 对象的事件26、在 Visual Basic 中使用 Microsoft Excel 工作表函数27、处理形状(图形对象)28、在某一 Microsoft Office 应用程序中控制其他 Microsoft Office 应用程序29、OLE 程序标识符30、关于数字签名31、启动 Microsoft Excel 时不运行“自动执行宏”32、焦点 二、了解对象、属性、方法和事件1、了解对象、属性、方法和事件 2、App
3、lication 对象3、Workbook 对象 4、Workbooks 属性5、Range 对象6、Range 属性7、Cells 属性8、Caller 属性9、Offset 属性 10、Rows 属性11、Activate 事件12、Activate、 Deactivate 事件13、Activate 方法14、WorkbookActivate 事件15、WindowActivate 事件16、On Error 语句17、在工作表上使用 ActiveX 控件 18、Add 方法(Scenarios 集合)19、Scenarios 集合对象20、Add 方法 (Validation 对象)2
4、1、Validation 对象22、Validation 属性23、Open 事件24、Open 方法25、 Click 事件26、Close 方法27、Change 事件 28、Value 属性29、DblClick 事件 30、SheetBeforeRightClick 事件31、Select 方法 32、Select 事件33、Goto 方法 34、Worksheet 对象35、SheetChange 事件 36、SheetActivate 事件37、OpenLinks 方法38、Enabled 属性 三、VBA语法(一)Visual Basic 的命名规则1、写 Visual Basi
5、c 语句2、写声明语句3、Dim 语句的语法4、Activate 方法的语法5、Set 语句6、MsgBox 函数的语法7、选项语句的语法8、AddressOf 运算符9、了解变体10、写赋值语句11、写可执行的语句12、Public 语句13、Private 语句14、使用数组15、使用常数16、AppActivate 语句17、Beep 语句19、Date 语句20、Error 语句 21、Exit 语句22、GoSub.Return 语句 23、GoTo 语句 24、Input # 语句 25、Let 语句 26、Load 语句 27、Name 语句 28、On.GoSub、On.GoT
6、o 语句 29、Open 语句 30、Rem 语句 31、Stop 语句 32、Time 语句 33、While.Wend 语句(二)逻辑语句1、If.Then.Else 语句2、使用 Select Case 语句3、使用 For.Next 语句4、For Each.Next 语句5、 Do.Loop 语句6、 With 语句(三)过程1、写 Sub 过程2、写 Function 过程3、写 Property 过程四、 ActiveX 控件1、AfterUpdate 事件2、Click 事件3、Click 事件、命令按钮控件、Accelerator 和 Caption 属性示例4、DblCli
7、ck 事件5、Error 事件6、KeyDown 和 KeyUp 事件7、KeyPress 事件8、KeyPress 事件示例9、MouseDown 和 MouseUp 事件10、MouseMove 事件11、列表框控件12、SpinDown 和 SpinUp 事件13、SpinDown、SpinUp 事件和 Delay 属性示例14、组合框控件15、命令按钮控件16、标签控件17、列表框控件、DataObject 对象、MouseMove 事件和 StartDrag、SetText 方法示例18、多页控件19、选项按钮控件20、文本框控件21、切换按钮控件22、用户窗体窗口一、VBA入门知识
8、1、激活工作簿用 Activate 方法激活工作簿后,该工作簿将放在活动窗口中。下述过程激活已打开的工作簿“MyBook.xls”。Sub MakeActive()Workbooks(MyBook.xls).ActivateEnd Sub2、创建新工作簿如果要用 Visual Basic 创建新的工作簿,应使用 Add 方法。下述过程创建了新工作簿。Microsoft Excel 自动将该工作簿命名为“BookN”,其中 N 是下一个可用的数字。新工作簿将成为活动工作簿。Sub AddOne()Workbooks.AddEnd Sub创建新工作簿的较好的方法是将其赋给一个对象变量。下例中,由
9、Add 方法返回的 Workbook 对象赋给了对象变量 newBook。然后,又设置了 newBook 的若干属性。使用对象变量可以很容易地控制新工作簿。Sub AddNew()Set newBook = Workbooks.AddWith newBook.Title = 1995 Sales.Subject = Sales.SaveAs filename:=95Sales.xlsEnd WithEnd Sub3、打开工作簿用 Open 方法打开一个工作簿时,该工作簿将成为 Workbooks 集合的成员。下述过程打开 C 盘上“MyFolder”文件夹内的工作簿“MyBook.xls”。S
10、ub OpenUp()Workbooks.Open(C:MyFolderMyBook.xls)End Sub4、用编号引用工作表编号是赋予工作表的连续的数字,这些数字的顺序,是根据同一类型的工作表的标签位置按由左而右的顺序确定的。下述过程使用 Worksheets 属性激活活动工作簿上的第一张工作表。Sub FirstOne()Worksheets(1).ActivateEnd Sub如果要处理所有类型的工作表(工作表、图表、模块表和对话框编辑表),可用 Sheets 属性。下述过程激活工作簿中的第四张工作表。Sub FourthOne()Sheets(4).ActivateEnd Sub注意
11、 移动、添加或删除工作表时,编号顺序将会改变。5、用名称引用工作表使用 Worksheets 属性和 Charts 属性时,可用名称标识工作表。下述语句激活活动工作簿内的不同工作表。Worksheets(Sheet1).ActivateCharts(Chart1).ActivateDialogSheets(Dialog1).Activate可用 Sheets 属性返回工作表、图表、模块表或对话框编辑表;Sheets 集合包含了所有这些表。下例激活活动工作簿内的图表“Chart1”。Sub ActivateChart()Sheets(Chart1).ActivateEnd Sub注意 嵌入到工作
12、表上的图表是 ChartObjects 集合的成员,而那些位于单独的表上的图表则属于 Charts 集合。6、将文档保存为 Web 页在 Microsoft Excel 2000 中,可以将工作簿、工作表、图表、区域、查询表、数据透视表报表、打印区域或自动筛选区域保存到 Web 页中。也可以直接在 Excel 中编辑 HTML 文件。将文档保存为 Web 页将文档保存为 Web 页是一个创建并保存 HTML 文件及其支持文件的过程。要完成此过程,可使用 SaveAs 方法,如下例所示,此示例将活动工作簿保存为文件“C:Reportsmyfile.htm”。ActiveWorkbook.Save
13、As _Filename:=C:Reportsmyfile.htm, _FileFormat:=xlHTML自定义 Web 页通过设置 DefaultWebOptions 对象和 WebOptions 对象的属性,用户可以自定义 HTML 文档的外观、内容、浏览器支持、编辑支持、图形格式、屏幕分辨率、文件组织和编码。DefaultWebOptions 对象中包含应用程序级别的属性。而任何具有相同名称的工作簿级别的设置(包含在 WebOptions 对象中)会覆盖这些设置。设置完属性后,可以使用 Publish 方法将工作簿、工作表、图表、区域、查询表、数据透视表报表、打印区域或自动筛选区域保存
14、到 Web 页中。下例设置了一些应用程序级别的属性,然后又设置了活动工作簿的 AllowPNG 属性,而此设置将覆盖应用程序级别的默认设置。最后,本示例将该区域保存为“C:Reports1998_Q1.htm”。With Application.DefaultWebOptions.RelyonVML = True.AllowPNG = True.PixelsPerInch = 96End WithWith ActiveWorkbook.WebOptions.AllowPNG = FalseWith .PublishObjects(1).FileName = C:Reports1998_Q1.h
15、tm.PublishEnd WithEnd With也可以直接将文件保存到 Web 服务器上。下例将一个区域保存到 Web 服务器上,假定该 Web 页的 URL 地址为 With ActiveWorkbookWith .WebOptions.RelyonVML = True.PixelsPerInch = 96End WithWith .PublishObjects(1).FileName = _.PublishEnd WithEnd With在 Microsoft Excel 中打开 HTML 文档要在 Excel 中编辑 HTML 文档,请首先使用 Open 方法打开该文档。下例打开文件
16、“C:Reports1997_Q4.htm”以便进行编辑。Workbooks.Open Filename:=C:Reports1997_Q4.htm打开文件后,就可以通过设置 DefaultWebOptions 和 WebOptions 对象的属性自定义该 HTML 文档的外观、内容、浏览器支持、编辑支持、图象格式、屏幕分辨率、文件组织和编码。7、用 A1 样式的记号引用单元格和单元格区域可在 Range 方法中以 A1 样式的记号引用单元格和单元格区域。下述 Sub 过程将单元格区域 A1:D5 的字体设置为加粗。Sub FormatRange()Workbooks(Book1).Sheet
17、s(Sheet1).Range(A1:D5) _.Font.Bold = TrueEnd Sub 下表演示了用于 Range 方法的一些 A1-样式的引用。引用含义Range(A1)单元格“A1”Range(A1:B5)从单元格“A1”到单元格“B5”的区域Range(C5:D9,G9:H16)多块的选定区域Range(A:A)“A”列Range(1:1)第一行Range(A:C)从“A”列到“C”列的区域Range(1:5)从第一行到第五行的区域Range(1:1,3:3,8:8)第 1、3 和 8 行Range(A:A,C:C,F:F)“A”列、“C”列和“F”列8、用编号引用单元格可用
18、Cells 属性及行号和列标引用单个单元格。该属性返回代表单个单元格的 Range 对象。下例中,Cells(6,1) 返回工作表“Sheet1”上的单元格“A6”,然后将 Value 属性设置为 10。Sub EnterValue()Worksheets(Sheet1).Cells(6, 1).Value = 10End Sub因为可用变量代入单元格索引值,所以 Cells 属性非常适于在单元格区域中循环,如下例所示。Sub CycleThrough()Dim counter As IntegerFor counter = 1 To 20Worksheets(Sheet1).Cells(co
19、unter, 3).Value = counterNext counterEnd Sub注意 如果要同时对某一区域内的所有单元格修改属性或应用方法,可用 Range 属性。有关的详细内容,请参阅“用 A1 样式的记号引用单元格和单元格区域”。9、引用行或列可用 Rows 属性或 Columns 属性处理整行或整列。这两个属性返回代表单元格区域的 Range 对象。下例中,用 Rows(1) 返回工作表“Sheet1”上的第一行,然后将该行的 Font 对象的 Bold 属性设置为 True。Sub RowBold()Worksheets(Sheet1).Rows(1).Font.Bold =
20、TrueEnd Sub下表演示了使用 Rows 属性和 Columns 属性的一些行和列的引用。引用含义Rows(1)第一行Rows工作表上所有的行Columns(1)第一列Columns(A)第一列Columns工作表上所有的列如果要同时处理若干行或列,可先创建一个对象变量,然后用 Union 方法把对 Rows 属性或 Columns 属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。Sub SeveralRows()Worksheets(Sheet1).ActivateDim myUnion As RangeSet myUnion = Un
21、ion(Rows(1), Rows(3), Rows(5)myUnion.Font.Bold = TrueEnd Sub10、用快捷记号引用单元格可用方括号将 A1 样式的引用或命名区域的名称括起来,作为 Range 属性的快捷方式。这样就不必键入“Range”和引号,如下述各例所示。Sub ClearRange()Worksheets(Sheet1).A1:B5.ClearContentsEnd SubSub SetValue()MyRange.Value = 30End Sub11、引用命名单元格区域用名称比用 A1 样式的记号更容易标识单元格区域。如果要命名选定的单元格区域,单击公式栏左
22、端的名称框,键入名称,然后按 ENTER 键。引用命名单元格区域下例引用了工作簿“MyBook.xls”中的单元格区域“MyRange”。Sub FormatRange()Range(MyBook.xls!MyRange).Font.Italic = TrueEnd Sub下例在工作簿“Report.xls”中引用了特定于工作表的单元格区域“Sheet1!Sales”。Sub FormatSales()Range(Report.xlsSheet1!Sales).BorderAround weight:=xlthinEnd Sub如果要选定命名的单元格区域,可用 GoTo 方法,该方法将激活指定
23、区域所在的工作簿和工作表,然后选定该区域。Sub ClearRange()Application.Goto Reference:=MyBook.xls!MyRangeSelection.ClearContentsEnd Sub下例显示了在活动工作簿中对上述同一过程的写法。Sub ClearRange()Application.Goto Reference:=MyRangeSelection.ClearContentsEnd Sub在命名区域中的单元格上循环下例用 For Each.Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过 limit 的值,就将该单元
24、格的颜色改为黄色。Sub ApplyColor()Const limit As Integer = 25For Each c In Range(MyRange)If c.Value limit Thenc.Interior.ColorIndex = 27End IfNext cEnd Sub12、按相对于其他单元格的方式来引用单元格处理位于相对于其他单元格的某一位置单元格的常用方法是使用 Offset 属性。下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线。Sub Underline()ActiveCell.Offset(1, 3).Font.Underline
25、 = xlDoubleEnd Sub注意 可用 Offset 属性而不用绝对引用方式来记录宏。指向“工具”菜单内的“录制宏”子菜单,然后单击“使用相对引用”命令即可。如果要在单元格区域中循环,可在循环中将 Cells 属性和变量共用。下例用从 5 到 100 的值以 5 为步长填充第三列的前 20 个单元格。变量 counter 用作 Cells 属性的行号。Sub CycleThrough()Dim counter As IntegerFor counter = 1 To 20Worksheets(Sheet1).Cells(counter, 3).Value = counter * 5Ne
26、xt counterEnd Sub13、用 Range 对象引用单元格将对象变量设置为 Range 对象,即可用变量名方便地操纵该单元格区域。下述过程创建了对象变量 myRange,然后将活动工作簿中工作表“Sheet1”上的单元格区域“A1:D5”赋予该变量。随后的语句用该变量代替该区域对象,以修改该区域的属性。Sub Random()Dim myRange As RangeSet myRange = Worksheets(Sheet1).Range(A1:D5)myRange.Formula = =RAND()myRange.Font.Bold = TrueEnd Sub14、引用工作表上
27、的所有单元格如果对工作表应用 Cells 属性时不指定索引,该属性将返回代表工作表上所有单元格的 Range 对象。下述 Sub 过程清除活动工作簿中工作表“Sheet1”上的所有单元格的内容。Sub ClearSheet()Worksheets(Sheet1).Cells.ClearContentsEnd Sub15、引用若干单元格区域使用适当的方法可以很容易地同时引用若干单元格区域。可用 Range 和 Union 方法引用任意组合的单元格区域;用 Areas 属性可引用工作表上选定的一组单元格区域。使用 Range 属性使用 Range 属性时,在两个或多个引用之间加上逗号,就可以引用多
28、重区域。下例清除了工作表“Sheet1”上三个单元格区域的内容。Sub ClearRanges()Worksheets(Sheet1).Range(C5:D9,G9:H16,B14:D18). _ClearContentsEnd Sub命名区域使得用 Range 属性处理多重区域更为容易。下例可在三个命名区域处于同一工作表时运行。Sub ClearNamed()Range(MyRange, YourRange, HisRange).ClearContentsEnd Sub使用 Union 方法用 Union 方法可将多个单元格区域组合到一个 Range 对象中。下例创建了名为 myMultip
29、leRange 的 Range 对象,并将其定义为单元格区域“A1:B2”和“C3:D4”的组合,然后将该组合区域的字体设置为加粗。Sub MultipleRange()Dim r1, r2, myMultipleRange As RangeSet r1 = Sheets(Sheet1).Range(A1:B2)Set r2 = Sheets(Sheet1).Range(C3:D4)Set myMultipleRange = Union(r1, r2)myMultipleRange.Font.Bold = TrueEnd Sub使用 Areas 属性可用 Areas 属性引用选定的单个单元格区域或多块的选定区域集合。下述过程计算选定区域内的块数目,如果选定区域中有多个块,就显示警告消息。Sub FindMultiple()If Selection.Areas.Count 1 ThenMsgBox Cannot do this to a multiple selection.End IfEnd Sub16、在单元格区域中循环使用 Visual Basic 时,经常需要对某一区域内的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1