首页 ExcelVBA

ExcelVBA

举报
开通vip

ExcelVBAVBA帮助 (摘自Office2000 VBA帮助) 一、VBA入门知识 1、激活工作簿 2、创建新工作簿 3、打开工作簿 4、用编号引用工作表 5、用名称引用工作表 6、将文档保存为 Web 页 7、用 A1 样式的记号引用单元格和单元格区域 8、用编号引用单元格 9、引用行或列 10、用快捷记号引用单元格 11、引用命名单元格区域 12、按相对于其他单元格的方式来引用单元格 13、用 Range 对象引用单元格 14、引用工作表上的所有单元格 15、引用若干单元格区域 16、在单元格区域中循环 17、选定和...

ExcelVBA
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、在文档中使用 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、了解对象、属性、方法和事件 HYPERLINK \l "_2、Application_对象" 2、Application 对象 3、Workbook 对象 4、Workbooks 属性 5、Range 对象 6、Range 属性 HYPERLINK \l "二7" 7、Cells 属性 8、Caller 属性 9、Offset 属性 HYPERLINK \l "_10、Rows_属性" 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 对象) 21、Validation 对象 22、Validation 属性 23、Open 事件 24、Open 方法 25、 Click 事件 26、Close 方法 HYPERLINK \l "_27、Change_事件" 27、Change 事件 28、Value 属性 29、DblClick 事件 30、SheetBeforeRightClick 事件 31、Select 方法 32、Select 事件 33、Goto 方法 34、Worksheet 对象 35、SheetChange 事件 36、SheetActivate 事件 37、OpenLinks 方法 HYPERLINK \l "_55、Enabled_属性" 38、Enabled 属性 三、VBA语法 (一)Visual Basic 的命名规则 1、写 Visual Basic 语句 2、写声明语句 3、Dim 语句的语法 4、Activate 方法的语法 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 5、Set 语句 HYPERLINK \l "三(一)6" 6、MsgBox 函数的语法 7、选项语句的语法 8、AddressOf 运算符 9、了解变体 10、写赋值语句 11、写可执行的语句 12、Public 语句 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 13、Private 语句 HYPERLINK \l "_14、使用数组" 14、使用数组 15、使用常数 16、AppActivate 语句 17、Beep 语句 19、Date 语句 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 20、Error 语句        HYPERLINK \l "三(一)21" CONTROL Internet.HHCtrl.1 21、Exit 语句 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 22、GoSub...Return 语句        HYPERLINK \l "三(一)23" 23、 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 GoTo 语句        CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 24、Input # 语句         CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 25、Let 语句 CONTROL Internet.HHCtrl.1         26、Load 语句         CONTROL Internet.HHCtrl.1 27、Name 语句 CONTROL Internet.HHCtrl.1         CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 28、On...GoSub、On...GoTo 语句    CONTROL Internet.HHCtrl.1     CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 29、Open 语句    CONTROL Internet.HHCtrl.1     CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 30、Rem 语句    CONTROL Internet.HHCtrl.1     CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 31、Stop 语句    CONTROL Internet.HHCtrl.1     CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 32、Time 语句        CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 CONTROL Internet.HHCtrl.1 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、DblClick 事件 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入门知识 1、激活工作簿 用 Activate 方法激活工作簿后,该工作簿将放在活动窗口中。下述过程激活已打开的工作簿“MyBook.xls”。 Sub MakeActive() Workbooks("MyBook.xls").Activate End Sub 2、创建新工作簿 如果要用 Visual Basic 创建新的工作簿,应使用 Add 方法。下述过程创建了新工作簿。Microsoft Excel 自动将该工作簿命名为“BookN”,其中 N 是下一个可用的数字。新工作簿将成为活动工作簿。 Sub AddOne() Workbooks.Add End Sub 创建新工作簿的较好的方法是将其赋给一个对象变量。下例中,由 Add 方法返回的 Workbook 对象赋给了对象变量 newBook。然后,又设置了 newBook 的若干属性。使用对象变量可以很容易地控制新工作簿。 Sub AddNew() Set newBook = Workbooks.Add With newBook .Title = "1995 Sales" .Subject = "Sales" .SaveAs filename:="95Sales.xls" End With End Sub 3、打开工作簿 用 Open 方法打开一个工作簿时,该工作簿将成为 Workbooks 集合的成员。下述过程打开 C 盘上“MyFolder”文件夹内的工作簿“MyBook.xls”。 Sub OpenUp() Workbooks.Open("C:\MyFolder\MyBook.xls") End Sub 4、用编号引用工作表 编号是赋予工作表的连续的数字,这些数字的顺序,是根据同一类型的工作表的标签位置按由左而右的顺序确定的。下述过程使用 Worksheets 属性激活活动工作簿上的第一张工作表。 Sub FirstOne() Worksheets(1).Activate End Sub 如果要处理所有类型的工作表(工作表、图表、模块表和对话框编辑表),可用 Sheets 属性。下述过程激活工作簿中的第四张工作表。 Sub FourthOne() Sheets(4).Activate End Sub 注意 移动、添加或删除工作表时,编号顺序将会改变。 5、用名称引用工作表 使用 Worksheets 属性和 Charts 属性时,可用名称标识工作表。下述语句激活活动工作簿内的不同工作表。 Worksheets("Sheet1").Activate Charts("Chart1").Activate DialogSheets("Dialog1").Activate 可用 Sheets 属性返回工作表、图表、模块表或对话框编辑表;Sheets 集合包含了所有这些表。下例激活活动工作簿内的图表“Chart1”。 Sub ActivateChart() Sheets("Chart1").Activate End Sub 注意 嵌入到工作表上的图表是 ChartObjects 集合的成员,而那些位于单独的表上的图表则属于 Charts 集合。 6、将文档保存为 Web 页 在 Microsoft Excel 2000 中,可以将工作簿、工作表、图表、区域、查询表、数据透视表报表、打印区域或自动筛选区域保存到 Web 页中。也可以直接在 Excel 中编辑 HTML 文件。 将文档保存为 Web 页 将文档保存为 Web 页是一个创建并保存 HTML 文件及其支持文件的过程。要完成此过程,可使用 SaveAs 方法,如下例所示,此示例将活动工作簿保存为文件“C:\Reports\myfile.htm”。 ActiveWorkbook.SaveAs _ Filename:="C:\Reports\myfile.htm", _ FileFormat:=xlHTML 自定义 Web 页 通过设置 DefaultWebOptions 对象和 WebOptions 对象的属性,用户可以自定义 HTML 文档的外观、 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 、浏览器支持、编辑支持、图形格式、屏幕分辨率、文件组织和编码。DefaultWebOptions 对象中包含应用程序级别的属性。而任何具有相同名称的工作簿级别的设置(包含在 WebOptions 对象中)会覆盖这些设置。 设置完属性后,可以使用 Publish 方法将工作簿、工作表、图表、区域、查询表、数据透视表报表、打印区域或自动筛选区域保存到 Web 页中。下例设置了一些应用程序级别的属性,然后又设置了活动工作簿的 AllowPNG 属性,而此设置将覆盖应用程序级别的默认设置。最后,本示例将该区域保存为“C:\Reports\1998_Q1.htm”。 With Application.DefaultWebOptions .RelyonVML = True .AllowPNG = True .PixelsPerInch = 96 End With With ActiveWorkbook .WebOptions.AllowPNG = False With .PublishObjects(1) .FileName = "C:\Reports\1998_Q1.htm" .Publish End With End With 也可以直接将文件保存到 Web 服务器上。下例将一个区域保存到 Web 服务器上,假定该 Web 页的 URL 地址为 http://example.homepage.com/annualreport.htm。 With ActiveWorkbook With .WebOptions .RelyonVML = True .PixelsPerInch = 96 End With With .PublishObjects(1) .FileName = _ "http://example.homepage.com/annualreport.htm" .Publish End With End With 在 Microsoft Excel 中打开 HTML 文档 要在 Excel 中编辑 HTML 文档,请首先使用 Open 方法打开该文档。下例打开文件“C:\Reports\1997_Q4.htm”以便进行编辑。 Workbooks.Open Filename:="C:\Reports\1997_Q4.htm" 打开文件后,就可以通过设置 DefaultWebOptions 和 WebOptions 对象的属性自定义该 HTML 文档的外观、内容、浏览器支持、编辑支持、图象格式、屏幕分辨率、文件组织和编码。 7、用 A1 样式的记号引用单元格和单元格区域 可在 Range 方法中以 A1 样式的记号引用单元格和单元格区域。下述 Sub 过程将单元格区域 A1:D5 的字体设置为加粗。 Sub FormatRange() Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _ .Font.Bold = True End 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、用编号引用单元格 可用 Cells 属性及行号和列标引用单个单元格。该属性返回代表单个单元格的 Range 对象。下例中,Cells(6,1) 返回工作表“Sheet1”上的单元格“A6”,然后将 Value 属性设置为 10。 Sub EnterValue() Worksheets("Sheet1").Cells(6, 1).Value = 10 End Sub 因为可用变量代入单元格索引值,所以 Cells 属性非常适于在单元格区域中循环,如下例所示。 Sub CycleThrough() Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter Next counter End Sub 注意 如果要同时对某一区域内的所有单元格修改属性或应用方法,可用 Range 属性。有关的详细内容,请参阅“用 A1 样式的记号引用单元格和单元格区域”。 9、引用行或列 可用 Rows 属性或 Columns 属性处理整行或整列。这两个属性返回代表单元格区域的 Range 对象。下例中,用 Rows(1) 返回工作表“Sheet1”上的第一行,然后将该行的 Font 对象的 Bold 属性设置为 True。 Sub RowBold() Worksheets("Sheet1").Rows(1).Font.Bold = True End Sub 下表演示了使用 Rows 属性和 Columns 属性的一些行和列的引用。 引用 含义 Rows(1) 第一行 Rows 工作表上所有的行 Columns(1) 第一列 Columns("A") 第一列 Columns 工作表上所有的列 如果要同时处理若干行或列,可先创建一个对象变量,然后用 Union 方法把对 Rows 属性或 Columns 属性的多个调用组合起来。下例将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗。 Sub SeveralRows() Worksheets("Sheet1").Activate Dim myUnion As Range Set myUnion = Union(Rows(1), Rows(3), Rows(5)) myUnion.Font.Bold = True End Sub 10、用快捷记号引用单元格 可用方括号将 A1 样式的引用或命名区域的名称括起来,作为 Range 属性的快捷方式。这样就不必键入“Range”和引号,如下述各例所示。 Sub ClearRange() Worksheets("Sheet1").[A1:B5].ClearContents End Sub Sub SetValue() [MyRange].Value = 30 End Sub 11、引用命名单元格区域 用名称比用 A1 样式的记号更容易标识单元格区域。如果要命名选定的单元格区域,单击公式栏左端的名称框,键入名称,然后按 ENTER 键。 引用命名单元格区域 下例引用了工作簿“MyBook.xls”中的单元格区域“MyRange”。 Sub FormatRange() Range("MyBook.xls!MyRange").Font.Italic = True End Sub 下例在工作簿“Report.xls”中引用了特定于工作表的单元格区域“Sheet1!Sales”。 Sub FormatSales() Range("[Report.xls]Sheet1!Sales").BorderAround weight:=xlthin End Sub 如果要选定命名的单元格区域,可用 GoTo 方法,该方法将激活指定区域所在的工作簿和工作表,然后选定该区域。 Sub ClearRange() Application.Goto Reference:="MyBook.xls!MyRange" Selection.ClearContents End Sub 下例显示了在活动工作簿中对上述同一过程的写法。 Sub ClearRange() Application.Goto Reference:="MyRange" Selection.ClearContents End Sub 在命名区域中的单元格上循环 下例用 For Each...Next 循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过 limit 的值,就将该单元格的颜色改为黄色。 Sub ApplyColor() Const limit As Integer = 25 For Each c In Range("MyRange") If c.Value > limit Then c.Interior.ColorIndex = 27 End If Next c End Sub 12、按相对于其他单元格的方式来引用单元格 处理位于相对于其他单元格的某一位置单元格的常用方法是使用 Offset 属性。下例中,将位于活动工作表上活动单元格下一行和右边三列的单元格的内容设置为双下划线。 Sub Underline() ActiveCell.Offset(1, 3).Font.Underline = xlDouble End Sub 注意 可用 Offset 属性而不用绝对引用方式来记录宏。指向“工具”菜单内的“录制宏”子菜单,然后单击“使用相对引用”命令即可。 如果要在单元格区域中循环,可在循环中将 Cells 属性和变量共用。下例用从 5 到 100 的值以 5 为步长填充第三列的前 20 个单元格。变量 counter 用作 Cells 属性的行号。 Sub CycleThrough() Dim counter As Integer For counter = 1 To 20 Worksheets("Sheet1").Cells(counter, 3).Value = counter * 5 Next counter End Sub 13、用 Range 对象引用单元格 将对象变量设置为 Range 对象,即可用变量名方便地操纵该单元格区域。 下述过程创建了对象变量 myRange,然后将活动工作簿中工作表“Sheet1”上的单元格区域“A1:D5”赋予该变量。随后的语句用该变量代替该区域对象,以修改该区域的属性。 Sub Random() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range("A1:D5") myRange.Formula = "=RAND()" myRange.Font.Bold = True End Sub 14、引用工作表上的所有单元格 如果对工作表应用 Cells 属性时不指定索引,该属性将返回代表工作表上所有单元格的 Range 对象。下述 Sub 过程清除活动工作簿中工作表“Sheet1”上的所有单元格的内容。 Sub ClearSheet() Worksheets("Sheet1").Cells.ClearContents End Sub 15、引用若干单元格区域 使用适当的方法可以很容易地同时引用若干单元格区域。可用 Range 和 Union 方法引用任意组合的单元格区域;用 Areas 属性可引用工作表上选定的一组单元格区域。 使用 Range 属性 使用 Range 属性时,在两个或多个引用之间加上逗号,就可以引用多重区域。下例清除了工作表“Sheet1”上三个单元格区域的内容。 Sub ClearRanges() Worksheets("Sheet1").Range("C5:D9,G9:H16,B14:D18"). _ ClearContents End Sub 命名区域使得用 Range 属性处理多重区域更为容易。下例可在三个命名区域处于同一工作表时运行。 Sub ClearNamed() Range("MyRange, YourRange, HisRange").ClearContents End Sub 使用 Union 方法 用 Union 方法可将多个单元格区域组合到一个 Range 对象中。下例创建了名为 myMultipleRange 的 Range 对象,并将其定义为单元格区域“A1:B2”和“C3:D4”的组合,然后将该组合区域的字体设置为加粗。 Sub MultipleRange() Dim r1, r2, myMultipleRange As Range Set r1 = Sheets("Sheet1").Range("A1:B2") Set r2 = Sheets("Sheet1").Range("C3:D4") Set myMultipleRange = Union(r1, r2) myMultipleRange.Font.Bold = True End Sub 使用 Areas 属性 可用 Areas 属性引用选定的单个单元格区域或多块的选定区域集合。下述过程计算选定区域内的块数目,如果选定区域中有多个块,就显示警告消息。 Sub FindMultiple() If Selection.Areas.Count > 1 Then MsgBox "Cannot do this to a multiple selection." End If End Sub 16、在单元格区域中循环 使用 Visual Basic 时,经常需要对某一区域内的每个单元格运行同一段语句。为达到这一目的,可将循环语句和标识每个单元格的一个或多个方法组合使用,每循环一次,就对一个单元格执行一次操作。 在单元格区域中循环的一种方法是使用 For...Next 循环语句和 Cells 属性。使用 Cells 属性时,可用循环计数器(或其他变量或表达式)作为单元格编号。下例中,变量 counter 代替了行号。此过程将在单元格区域“C1:C20”中循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。 Sub RoundToZero1() For counter = 1 To 20 Set curCell = Worksheets("Sheet1").Cells(counter, 3) If Abs(curCell.Value) < 0.01 Then curCell.Value = 0 Next counter End Sub 在单元格区域中循环的另一种简便方法是使用 For Each...Next 循环语句和由 Range 方法返回的单元格集合。在每一次循环过程中,Visual Basic 都为下一次循环所用的单元格自动设置一个对象变量。下述过程在单元格区域“A1:D10”中循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。 Sub RoundToZero2() For Each c In Worksheets("Sheet1").Range("A1:D10").Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next End Sub 如果不知道要循环的单元格区域的确切边界,可用 CurrentRegion 属性返回活动单元格周围的区域。例如,下述过程在工作表上运行时,将在活动单元格周围的区域内循环,将所有绝对值小于 0.01 的数字都设置为 0(零)。 Sub RoundToZero3() For Each c In ActiveCell.CurrentRegion.Cells If Abs(c.Value) < 0.01 Then c.Value = 0 Next End Sub 17、选定和激活单元格 使用 Microsoft Excel 时,通常要先选定单元格或单元格区域,然后执行某一操作,如设置单元格的格式,或在单元格中输入数值。但在 Visual Basic 中,在修改单元格之前,通常不必先选定它们。 例如,如果要用 Visual Basic 在单元格“D6”中输入公式,就不需要先选定单元格“D6”,而只需返回该 Range 对象,然后将该对象的 Formula 属性设置为所需的公式,如下例所示。 Sub EnterFormula() Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)" End Sub 如果要查阅使用其他方法不选定单元格就控制它们的示例,请参阅“如何引用单元格和区域”。 使用 Select 方法和 Selection 属性 Select 方法激活工作表和工作表上的对象;而 Selection 属性返回代表活动工作簿中活动工作表上的当前选定区域的对象。在使用 Selection 属性之前,必须先激活工作簿,用 Select 方法激活或选定工作表,然后再选定单元格区域(或其他对象)。 宏记录器经常创建使用 Select 方法和 Selection 属性的宏。下述 Sub 过程是用宏记录器创建的,该过程演示了如何共用 Select 方法和 Selection 属性。 Sub Macro1() Sheets("Sheet1").Select Range("A1").Select ActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True End Sub 下例完成同样的功能,但不用激活或选定工作表或单元格。 Sub Labels() With Worksheets("Sheet1") .Range("A1") = "Name" .Range("B1") = "Address" .Range("A1:B1").Font.Bold = True End With End Sub 选定活动工作表上的单元格 如果用 Select 方法选定单元格,就应注意 Select 方法仅用于活动工作表。从模块中运行 Sub 过程时,必须先在该过程中激活工作表,然后才能用 Select 方法选定单元格区域,否则该方法将失败。例如,下述过程在活动工作簿中将工作表“Sheet1”中的一行复制到工作表“Sheet2”上。 Sub CopyRow() Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste End Sub 激活选定区域内的单元格 可用 Activate 方法激活选定区域内的单元格。即便选定了单元格区域,也只能有一个活动单元格。下述过程选定了一个单元格区域,然后激活该区域内的一个单元格,但并不改变选定区域。 Sub MakeActive() Worksheets("Sheet1").Activate Range("A1:D4").Select Range("B2").Activate End Sub 18、处理三维区域 如果要处理若干工作表上同一位置的单元格区域,可用 Array 函数同时选定两张或多张工作表。下例设置三维单元格区域的边框格式。 Sub FormatSheets() Sheets(Array("Sheet2", "Sheet3", "Sheet5")).Select Range("A1:H1").Select Selection.Borders(xlBottom).LineStyle = xlDouble End Sub 下例应用 FillAcrossSheets 方法,在活动工作簿中,将工作表“Sheet2”上单元格区域的格式和数据复制到该工作簿中所有工作表上的相应区域中。 Sub FillAll() Worksheets("Sheet2").Range("A1:H1") _ .Borders(xlBottom).LineStyle = xlDouble Worksheets.FillAcrossSheets (Worksheets("Sheet2") _ .Range("A1:H1")) End Sub 19、处理活动单元格 ActiveCell 属性返回代表活动单元格的 Range 对象。可对活动单元格应用 Range 对象的任意属性和方法,如下例所示。 Sub SetValue() Worksheets("Sheet1").Activate ActiveCell.Value = 35 End Sub 注意 只有活动单元格所在的工作表处于活动状态时,才能处理该活动单元格。 移动活动单元格 可用 Activate 方法设置活动单元格。例如,下述过程使单元格“B5”成为活动单元格,然后将其字体设置为加粗。 Sub SetActive() Worksheets("Sheet1").Activate Worksheets("Sheet1").Range("B5").Activate ActiveCell.Font.Bold = True End Sub 注意 如果要选定单元格区域,可用 Select 方法。如果要使单个单元格成为活动单元格,则要用 Activate 方法。 可用 Offset 属性来移动活动单元格。下述过程在选定区域内的活动单元格中插入文字,然后将活动单元格右移一列,但并不改变选定区域。 Sub MoveActive() Worksheets("Sheet1").Activate Range("A1:D10").Select ActiveCell.Value = "Monthly Totals" ActiveCell.Offset(0, 1).Activate End Sub 选择活动单元格周围的单元格 CurrentRegion 属性返回由空白行和空白列所包围的单元格区域。下例中,选定区域扩充到与活动单元格相邻的包含数据的所有单元格,然后用“货币”样式设置扩充后的区域的格式。 Sub Region() Worksheets("Sheet1").Activate ActiveCell.CurrentRegion.Select Selection.Style = "Currency" End Sub 20、在工作表上使用 ActiveX 控件 本帮助主 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 包括了有关在工作表或图表上使用 ActiveX 控件的特定信息。有关添加和处理控件的一般信息,请参阅“在文档中使用 ActiveX 控件”和“创建自定义对话框”。 在工作表上处理控件时,必须记住以下几点。 · 除 ActiveX 控件的标准属性之外,在 Microsoft Excel 中还可使用 ActiveX 控件的下列属性:BottomRightCell、LinkedCell、ListFillRange、Placement、PrintObject、TopLeftCell 和 ZOrder。 这些属性可用 ActiveX 控件的名称来返回或设置。下例滚动工作簿窗口,使 CommandButton1 位于窗口的左上角。 Set t = Sheet1.CommandButton1.TopLeftCell With ActiveWindow .ScrollRow = t.Row .ScrollColumn = t.Column End With · 当 ActiveX 控件处于激活状态时,将禁用某些 Microsoft Excel Visual Basic 方法和属性。例如,当某一控件激活时,就不能使用 Sort 方法,故下述按钮单击事件处理过程中的代码将失败(因为用户单击按钮后,该按钮就处于激活状态)。 · Private Sub CommandButton1.Click · Range("a1:a10").Sort Key1:=Range("a1") End Sub 可通过先激活工作表上的其他元素的方法来绕过这种问题。例如,下列代码可对单元格区域排序: Private Sub CommandButton1.Click Range("a1").Activate Range("a1:a10").Sort Key1:=Range("a1") CommandButton1.Activate End Sub · 当用户通过双击鼠标来编辑内嵌在其他应用程序的文档中的 Microsoft Excel 工作簿时,该工作簿上的控件将不会正常工作。如果用户是通过用右键单击工作簿,然后选中快捷菜单上的“打开”命令来编辑工作簿的话,工作簿上的控件就能正常工作了。 · 用 Microsoft Excel 5.0/95 工作簿文件格式保存 Microsoft Excel 工作簿时,将丢失 ActiveX 控件信息。 · 在工作表上 ActiveX 控件的事件处理过程中,Me 关键字所指向的是工作表,而非控件。 用 Visual Basic 添加控件 在 Microsoft Excel 中,用 OLEObjects 集合中的 OLEObject 对象代表 ActiveX 控件(所有的 OLEObject 对象也包含在 Shapes 集合中)。如果要用编程的方式向工作表添加 ActiveX 控件,可用 OLEObjects 集合的 Add 方法。下例向第一张工作表添加命令按钮。 Worksheets(1).OLEObjects.Add "Forms.CommandButton.1", _ Left:=10, Top:=10, Height:=20, Width:=100 通过 Visual Basic 使用控件属性 绝大多数情况下,可在 Visual Basic 代码中用名称引用 ActiveX 控件。下例修改了控件“CommandButton1”的标题。 Sheet1.CommandButton1.Caption = "Run" 请注意,当在控件所在的工作表的类模块之外使用控件的名称时,必须用工作表的名称限定该控件的名称。 如果要修改在 Visual Basic 代码中所用的控件的名称,可先选定该控件,然后在“属性”窗口中设置控件的“(名称)”属性。 因为 ActiveX 控件也可用 OLEObjects 集合中的 OLEObject 对象代表,所以也可用该集合中的对象来设置控件的属性。下例设置了控件“CommandButton1”的左边位置。 Worksheets(1).OLEObjects("CommandButton1").Left = 10 那些不属于 OLEObject 对象的属性的控件属性,可通过由 Object 属性返回的实际控件对象来设置。下例设置了控件“CommandButton1”的标题。 Worksheets(1).OLEObjects("CommandButton1"). _ Object.Caption = "run me" 因为所有的 OLE 对象也是 Shapes 集合的成员,所以也可用该集合设置若干控件的属性。下例对齐第一张工作表上的所有控件的左边框。 For Each s In Worksheets(1).Shapes If s.Type = msoOLEControlObject Then s.Left = 10 Next 使用 Shapes 和 OLEObjects 集合的控件名称 工作表上的 ActiveX 控件具有两个名称:其一是包含该控件的形状的名称,当查看工作表时,可在“Name”框中看到此名称;其二是控件的代码名称,在“属性”窗口的“(名称)”框右边的单元格中可看到此名称。第一次向工作表中添加控件时,形状名称和代码名称是相同的。但是,如果更改其中之一(形状名称或代码名称),另一个名称并不会自动随之更改。 对于控件的事件过程,其名称中所使用的是控件的代码名称。但是,当从工作表的 Shapes 或 OLEObjects 集合中返回控件时,必须使用形状名称(而不是代码名称),以便按名称引用控件。例如,假设向工作表中添加了一个复选框,其默认形状名称和默认代码名称都是“CheckBox1”。如果此后在“属性”窗口的“(名称)”旁键入了“chkFinished”,从而将控件的代码名称更改为“chkFinished”,则在事件过程名称中必须使用 chkFinished,而仍然应使用 CheckBox1 从 Shapes 或 OLEObject 集合中返回控件,如下例所示。 Private Sub chkFinished_Click() ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 End Sub 21、在文档中使用 ActiveX 控件 就如同可向自定义对话框中添加 ActiveX 控件一样,也可向文档直接添加控件,从而可以为用户提供直接同宏打交道的的手段,而使用户不必被对话框所干扰。可用下列过程向文档添加 ActiveX 控件。有关在 Microsoft Excel 中使用 ActiveX 控件的特定信息,请参阅在工作表上使用 ActiveX 控件。 1)向文档中添加控件 显示“控件工具箱”,单击要添加的控件,然后单击文档。 2)置控件的属性 在 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 模式下,用右键单击该控件,然后单击快捷菜单内的“属性”命令以显示属性窗口。 3)始化控件 可在某一过程中初始化控件。 4)编写事件过程 所有的控件都有一系列的预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件。可以编写事件发生时所运行的事件处理过程。 5)码运行时使用控件的值 有些属性可在运行时进行设置。 22、创建自定义对话框 可用下述过程创建自定义对话框。 1)创建用户窗体 在 Visual Basic 编辑器中,单击“插入”菜单内的“添加用户窗体”命令。 2)向用户窗体中添加控件 在“工具箱”中找到要添加的控件,并将其拖到窗体中。 3)设置控件的属性 在设计模式下,用右键单击该控件,然后单击快捷菜单内的“属性”命令以显示属性窗口。 4)初始化控件 可在窗体显示之前的某一过程中初始化控件,或者在窗体的 Initialize 事件中添加初始化代码。 5)编写事件过程 所有的控件都有一系列的预定义事件。例如,当用户单击命令按钮时,该命令按钮就引发一个 Click 事件。可以编写事件发生时所运行的事件处理过程。 6)显示对话框 可用 Show 方法显示用户窗体。 7)代码运行时使用控件的值 有些属性可在运行时进行设置。用户对对话框所作的修改,在对话框关闭后将丢失。 23、在窗体上使用 Microsoft Office Web 组件 在 Visual Basic 或 Visual Basic for Applications 中,可以向用户窗体中添加 Microsoft Office Web 组件,其方法与向用户窗体中添加任何其他 ActiveX 控件相同。注意,虽然在设计窗体时可以使用“属性工具箱”,但却不能在运行时从模式窗体或对话框中的 Microsoft Office Web 组件中显示“属性工具箱”。对于在非 Visual Basic 或 Visual Basic for Applications 以外的其他设计环境中所创建的模式窗体,此情况同样适用。 可以使用 ShowModal 属性将窗体设置为无模式。 24、内置对话框参数表 对话框常量 参数表 xlDialogActivate window_text, pane_num xlDialogActiveCellFont font, font_style, size, strikethrough, superscript, subscript, outline, shadow, underline, color, normal, background, start_char, char_count xlDialogAddChartAutoformat name_text, desc_tex
本文档为【ExcelVBA】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_284227
暂无简介~
格式:doc
大小:1004KB
软件:Word
页数:96
分类:
上传时间:2011-11-27
浏览量:66