1、或者:ActiveCell.EntireRow.SelectActiveCell.EntireColumn.Select选择相邻的多行/多列:A:C1:5选择不相邻的多行/多列:和选择相邻的多行/多列不同,使用Range而不是Columns/Rows:A, C:C, E:F1,5:6,9:9选择当前活动单元格向下至最后一个非空单元格:, Range().End(xlDown).SelectRange(ActiveCell, ActiveCell.End(xlDown).Select选择当前活动单元格向上至第一个非空单元格:A32).End(xlUp).SelectRange(ActiveCel
2、l, ActiveCell.End(xlUp).Select选择当前活动单元格向右至第一个非空单元格。是 xlTORight而不是 xlRight).End(xltoRight).SelectRange(ActiveCell, ActiveCell.End(xltoLeft).Select选择当前活动单元格向右至第10个单元格。A2).Offset(0, 10).SelectRange(ActiveCell, ActiveCell.Offset(0, 10).Select选择当前活动单元格向左至第10个单元格。A20).Offset(0, -10).SelectRange(ActiveCell
3、, ActiveCell.Offset(0, -10).Select选择当前活动单元格向下至第10个单元格。a2).Offset(10, 0).SelectRange(ActiveCell, ActiveCell.Offset(10, 0).Select选择当前活动单元格向上至第10个单元格。).End(xlDown).Offset(1, 0).Select选择该行中第一个空单元格:).End(xltoRight).Offset(0,1).Select改变区域的大小(由 A1:B5 变为 A1:D10):改区域并不是向外扩张,而是重新定义了。即“Selection.Resize(10, 4).
4、Select而不是Selection.Resize(5, 2).Select Excel的宏不能记录移至当前行的第一个单元格的动作(即你按下“Home”键的动作),下面的语句则可以做到:ActiveCell.Offset(0, -ActiveCell.Column + 1).Select移至当前列的第一个单元格:ActiveCell.Offset( -ActiveCell.Row + 1,0).Select关于If.Then.EndIf如果只有一个条件及一个动作,你可以用以下语句:If Selection.Value 10 ThenSelection.Offset(1,0) = 100End
5、If或者更简单的: 10 Then Selection.Offset(1,0) = 100如果有两个条件及两个动作,你可以用下面的语句If Selection.Value = 12 ThenSelection.Offset(1,0) = 20关于If.Then.And.EndIf当有双重条件和一个动作时,你可以用下面的语句:If Selection.Value = 10 And Selection.Offset(0,1).Value = 20 Then关于If.Then.Or.EndIfIf Selection.Value = 10 Or Selection.Offset(0,1).Value
6、 = 20 Then关于If.Then.Else.EndIf当只有一个条件和两个动作时,你可以用下面的语句:ElseSelection.Offset(1,0) = 0关于If.Then.ElseIf.EndIf当有不止一个条件,且每个条件都跟随不同的动作时,你可以用下面的语句:If Selection.Value = 1 ThenSelection.Offset(1, 0) = 10ElseIf Selection.Value = 2 ThenSelection.Offset(1, 0) = 20ElseIf Selection.Value = 3 ThenSelection.Offset(1
7、, 0) = 30ElseIf Selection.Value = 4 ThenSelection.Offset(1, 0) = 40ElseIf Selection.Value = 5 ThenSelection.Offset(1, 0) = 50关于Select Case当你不得不测试很多条件,你可以用Select Case 语句来代替If Then.ElseIf 。语法如下:Sub test()Select Case Selection.ValueCase Is = 85Selection.Offset(0, 1) = = 75B= 65= 50DCase ElseEnd SelectE
8、nd Sub这段语句的意思就是:如果所选单元格的值大于85时,则其右边那个单元格的值为“A” 所选单元格的值小于50时,其右边那个单元格的值为“F”这里有一些关于VBA函数 LCase, Now(), UCase 的例子:很多EXCEL函数都可以以下面的形式用在VBA中:varAnswer = Application.WorksheetFunction.Sum(Range()或者varAnswer = Application.Sum(Range(LCase当对输入的字符做判断时,我们无法知道用户输入的字符是大写还是小写,用LCase函数可以将其转化为小写:If LCase(Selection.
9、value)= toto then.orSelect Case LCase(Selection.value)DO WHILE LCase(Selection.value)NOW()NOW() 既是Excel 函数也是VBA 函数。通过下面的语句,在打开工作簿时,单元格 就会显示为当前时间:).Formula = =Now()下面的语句则在执行后赋予单元格“A1”当前时间,该时间不会改变除非你再次执行语句。并且你每次打开工作簿后,单元格“A1”的值不会改变。).Value = Now()UCase当对输入的字符做判断时,我们无法知道用户输入的字符是大写还是小写,用LCase函数可以将其转化为大写
10、:If UCase(Selection.value)= TOTOSelect Case UCase(Selection.value)DO WHILE UCase(Selection.value)VBA语句集(第1辑)定制模块行为(1) Option Explicit 强制对模块内所有变量进行声明Option Private Module 标记模块为私有,仅对同一工程中其它模块有用,在宏对话框中不显示 Option Compare Text 字符串不区分大小写 Option Base 1 指定数组的第一个下标为1(2) On Error Resume Next 忽略错误继续执行VBA代码,避免出
11、现错误消息(3) On Error GoTo ErrorHandler 当错误发生时跳转到过程中的某个位置(4) On Error GoTo 0 恢复正常的错误提示(5) Application.DisplayAlerts=False 在程序执行过程中使出现的警告框不显示(6) Application.ScreenUpdating=False 关闭屏幕刷新 Application.ScreenUpdating=True 打开屏幕刷新(7) Application.Enable.CancelKey=xlDisabled 禁用Ctrl+Break中止宏运行的功能工作簿(8) Workbooks.A
12、dd() 创建一个新的工作簿(9) Workbooks(“book1.xls”).Activate 激活名为book1的工作簿(10) ThisWorkbook.Save 保存工作簿(11) ThisWorkbook.close 关闭当前工作簿(12) ActiveWorkbook.Sheets.Count 获取活动工作薄中工作表数(13) ActiveWorkbook.name 返回活动工作薄的名称(14) ThisWorkbook.Name 返回当前工作簿名称 ThisWorkbook.FullName 返回当前工作簿路径和名称(15) ActiveWindow.EnableResize=
13、False 禁止调整活动工作簿的大小(16) Application.Window.Arrange xlArrangeStyleTiled 将工作簿以平铺方式排列(17) ActiveWorkbook.WindowState=xlMaximized 将当前工作簿最大化工作表(18) ActiveSheet.UsedRange.Rows.Count 当前工作表中已使用的行数(19) Rows.Count 获取工作表的行数(注:考虑向前兼容性)(20) Sheets(Sheet1).Name= “Sum” 将Sheet1命名为Sum(21) ThisWorkbook.Sheets.Add Befo
14、re:=Worksheets(1) 添加一个新工作表在第一工作表前(22) ActiveSheet.Move After:=ActiveWorkbook. _Sheets(ActiveWorkbook.Sheets.Count) 将当前工作表移至工作表的最后(23) Worksheets(Array(“sheet1”,”sheet2”).Select 同时选择工作表1和工作表2(24) Sheets(“sheet1”).Delete或 Sheets(1).Delete 删除工作表1(25) ActiveWorkbook.Sheets(i).Name 获取工作表i的名称(26) ActiveWi
15、ndow.DisplayGridlines=Not ActiveWindow.DisplayGridlines 切换工作表中的网格线显示,这种方法也可以用在其它方面进行相互切换,即相当于开关按钮(27) ActiveWindow.DisplayHeadings=Not ActiveWindow.DisplayHeadings切换工作表中的行列边框显示(28) ActiveSheet.UsedRange.FormatConditions.Delete 删除当前工作表中所有的条件格式(29) Cells.Hyperlinks.Delete 取消当前工作表所有超链接(30) ActiveSheet.
16、PageSetup.Orientation=xlLandscape 或ActiveSheet.PageSetup.Orientation=2 将页面设置更改为横向(31) ActiveSheet.PageSetup.RightFooter=ActiveWorkbook.FullName 在页面设置的表尾中输入文件路径ActiveSheet.PageSetup.LeftFooter=Application.UserName 将用户名放置在活动工作表的页脚单元格/单元格区域(32) ActiveCell.CurrentRegion.Select 或Range(ActiveCell.End(xlUp
17、),ActiveCell.End(xlDown).Select 选择当前活动单元格所包含的范围,上下左右无空行(33) Cells.Select 选定当前工作表的所有单元格(34) Range(“A1”).ClearContents 清除活动工作表上单元格A1中的内容Selection.ClearContents 清除选定区域内容Range(“A1:D4”).Clear 彻底清除A1至D4单元格区域的内容,包括格式(35) Cells.Clear 清除工作表中所有单元格的内容(36) ActiveCell.Offset(1,0).Select 活动单元格下移一行,同理,可下移一列(37) Ra
18、nge(“A1”).Offset(ColumnOffset:=1)或Range(“A1”).Offset(,1) 偏移一列Range(“A1”).Offset(Rowoffset:=-1)或Range(“A1”).Offset(-1) 向上偏移一行(38) Range(“A1”).Copy Range(“B1”) 复制单元格A1,粘贴到单元格B1中D8”).Copy Range(“F1”) 将单元格区域复制到单元格F1开始的区域中D8”).Cut Range(“F1”) 剪切单元格区域A1至D8,复制到单元格F1开始的区域中Range(“A1”).CurrentRegion.Copy Shee
19、ts(“Sheet2”).Range(“A1”) 复制包含A1的单元格区域到工作表2中以A1起始的单元格区域中注:CurrentRegion属性等价于定位命令,由一个矩形单元格块组成,周围是一个或多个空行或列(39) ActiveWindow.RangeSelection.Value=XX 将值XX输入到所选单元格区域中(40) ActiveWindow.RangeSelection.Count 活动窗口中选择的单元格数(41) Selection.Count 当前选中区域的单元格数(42) GetAddress=Replace(Hyperlinkcell.Hyperlinks(1).Addr
20、ess,mailto:,”) 返回单元格中超级链接的地址并赋值(43) TextColor=Range(“A1”).Font.ColorIndex 检查单元格A1的文本颜色并返回颜色索引Range(“A1”).Interior.ColorIndex 获取单元格A1背景色(44) cells.count 返回当前工作表的单元格数(45) Selection.Range(“E4”).Select 激活当前活动单元格下方3行,向右4列的单元格(46) Cells.Item(5,”C”) 引单元格C5 Cells.Item(5,3) (47) Range(“A1”).Offset(RowOffset:
21、=4,ColumnOffset:=5)或 Range(“A1”).Offset(4,5) 指定单元格F5(48) Range(“B3”).Resize(RowSize:=11,ColumnSize:=3)Rnage(“B3”).Resize(11,3) 创建B3:D13区域(49) Range(“Data”).Resize(,2) 将Data区域扩充2列(50) Union(Range(“Data1”),Range(“Data2”) 将Data1和Data2区域连接(51) Intersect(Range(“Data1”),Range(“Data2”) 返回Data1和Data2区域的交叉区域
22、(52) Range(“Data”).Count 单元格区域Data中的单元格数 Range(“Data”). Columns.Count 单元格区域Data中的列数 Range(“Data”). Rows.Count 单元格区域Data中的行数(53) Selection.Columns.Count 当前选中的单元格区域中的列数Selection.Rows.Count 当前选中的单元格区域中的行数(54) Selection.Areas.Count 选中的单元格区域所包含的区域数(55) ActiveSheet.UsedRange.Row获取单元格区域中使用的第一行的行号(56) Rng.C
23、olumn 获取单元格区域Rng左上角单元格所在列编号(57) ActiveSheet.Cells.SpecialCells(xlCellTypeAllFormatConditions) 在活动工作表中返回所有符合条件格式设置的区域(58) Range(“A1”).AutoFilter Field:=3,VisibleDropDown:=False 关闭由于执行自动筛选命令产生的第3个字段的下拉列表名称(59) Range(“A1:C3”).Name=“computer” 命名A1:C3区域为computer或Range(“D1:E6”).Name=“Sheet1!book” 命名局部变量,即
24、Sheet1上区域D1:E6为book或 Names(“computer”).Name=“robot” 将区域computer重命名为robot(60) Names(“book”).Delete 删除名称(61) Names.Add Name:=“ContentList”,_RefersTo:=“=OFFSET(Sheet1!A2,0,0,COUNTA(Sheet2!$A:$A)” 动态命名列(62) Names.Add Name:=“Company”,RefersTo:=“CompanyCar” 命名字符串CompanyCar(63) Names.Add Name:=“Total”,Refe
25、rsTo:=123456 将数字123456命名为Total。注意数字不能加引号,否则就是命名字符串了。(64) Names.Add Name:=“MyArray”,RefersTo:=ArrayNum 将数组ArrayNum命名为MyArray。(65) Names.Add Name:=“ProduceNum”,RefersTo:=“=$B$1”,Visible:将名称隐藏(66) ActiveWorkbook.Names(“Com”).Name 返回名称字符串公式与函数(67) Application.WorksheetFunction.IsNumber(“A1”) 使用工作表函数检查A1
26、单元格中的数据是否为数字(68) Range(“A:A”).Find(Application.WorksheetFunction.Max(Range(“A:A”).Activate 激活单元格区域A列中最大值的单元格(69) Cells(8,8).FormulaArray=“=SUM(R2C-1:R-1C-1*R2C:R-1C)” 在单元格中输入数组公式。注意必须使用R1C1样式的表达式图表(70) ActiveSheet.ChartObjects.Count 获取当前工作表中图表的个数(71) ActiveSheet.ChartObjects(“Chart1”).Select 选中当前工作表中图表Chart1(72) ActiveSheet.ChartObjects(“Chart1”).Activate ActiveChart.ChartArea.Select 选中当前图表区域(73) WorkSheets(“Sheet1”).ChartObjects(“
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2