人气 3186

Excel宏与VBA的12个关键知识点(小白进阶篇) [复制链接]

@Xizi_P8dStzbT 2017-6-16 17:18:12
1 VBA代码编辑器VBE的“模块”1.1 打开VBE(快捷键是alt+F11)→插入,即可在工程列表的“模块”下插入模块;1.2 录制的“宏”在工程列表的“模块”下查看;1.3 自定义sub过程或函数在工程列表的“模块”下编写;(网上共享的代码复制到此处即可使用)

1497604506219031.jpg

1497604506219031.jpg

2 录了一个宏Marco1后,如何再接着录?
  • 执行Marco1;
  • 录制宏Marco2;
  • 将录制的宏Marco2的内容复制到Marco1后。
    3 某列的最后非空行Dim Lrow As LongLrow = Range("B" & Cells.Rows.Count).End(xlUp).Row - 1
    4 行号与行数Range("B2").Value = ActiveCell.RowRange("B3").Value = Sheets(1).UsedRange.Rows.Count
    5 ThisWorkbook和ActiveWorkbookThisWorkbook指当前VBA代码所处的Workbook,
    ActiveWorkbook指当前活跃的Workbook相同点:如果VBA代码只对本身工作簿进行操作,则一直是相同的。不同点:若VBA代码新建或打开了其它工作簿,则往往新建的或刚打开的是Activeworkbook,可以通过 “工作簿名。active”方法激活指定对象。活动工作表和活动单元格:如Sheets("Sheet2").Activate即可得到ActiveSheet对象。如cells(1,1).select,即可得到ActiveCell对象。
    6 UsedRange和CurrentRegionUsedRange和CurrentRegion(不区分大小写)是应用非常频繁的两个属性,Usedrange是工作表的属性,即其使用时应该是sheets(1).usedrange、sheets(2).usedrange这种形式,而currentregion是单元格的属性,即其使用应该是range("A1").currentregion或cells(1,1).CurrentRegion这种形式。先从字面意思上来看,usedrange就是已经使用的区域的意思,也就是说sheet1.usedrange表示的是sheet1表格中已经使用的区域,怎么理解这个已经使用的区域呢?已经使用的区域就是指鼠标从整个表格最左上角的那个非空单元格一直拖动到整个表格最右下角的那个已经使用过的单元格所选择的区域。而CurrentRegion的字面意思就是当前区域,那个range("A1").currentregion就是指A1单元格当前所在的那个区域,在这里当前所在的区域就是指当前单元格所在的以空行和空列隔开的区域。
    7 UsedRange的陷阱ActiveSheet.UsedRange.selectSelection.Rows.count如果这个区域末端有些行的数据已使用过,但现在该区域的数据有清空,但还保留了某些单元格格式,则该行也会包括在内。
    8 单元格或区域的偏移和重置8.1 按偏移量重置区域引用Range("D4").offset(2,-2),相当于是Range("F2");Range("D4:F6").offset(2,2),相当于是Range("F6:H8");8.2 按宽度与高度重置区域Range.Resize(RowSize,ColumnSize),其中参RowSize代表重置后的行数,ColumnSize代表重置后的列数。两个参数皆为可选参数,Range("D4").Resize(2,2),相当于是Range("D4:F6");
    9 Select必须是对活动工作表的操作
    worksheets("Name").selectrange("A1:B5").select
    10 事件过程与自动宏
  • 工作簿事件
  • 工作表事件
  • 窗体事件
  • 控件事件
    如建立Workbook_Open事件:

    1497604533895018.jpg

    1497604533895018.jpg

    在工程窗口双击工作簿“ThisWorkbook”对象,对象列表:Workbook→过程列表:Open;会自动产生工作表的Workbook_Open事件的程序外壳。Excel的事件可以手工启用和禁用:在VBA中,通过Application对象的EnableEvents属性来控制,将EnableEvents属性设置为True即启用事件,设为False即为禁用事件。完整的代码如下:Application.EnableEvents=TrueApplication.EnableEvents=False在Excel2007中,可以使用工作簿级的“Workbook_Open”事件来执行自动宏。不过为了体现兼容性,微软并没有将Auto宏禁用,仍然可以继续使用,但绝不推荐用户继续使用。
    11 相关设置
  • 避免因错误而出现的代码中断:On Error Resume next
  • 不要出现警告对话框:Application. Displayalerts = false
  • 禁止屏幕刷新:Application.ScreenUpdating = false
  • 禁用对象事件:Application.EnableEvents=True
    12 将较大的过程分为多个过程再调用VBA允许一个过程存入上千条代码,然而一个过程太庞大不利于阅读和维护,特别是一个代码超过一屏时。此时需要将过程按作用分为多个子过程,再到主过程中调用(都是过程sub,一个过程可以用call命令调用另一个过程)。
  • 您需要登录后才可以回帖 登录 | 立即注册

    QQ|手机版|精益人 ( 沪ICP备19004111号-1 )|网站地图

    GMT+8, 2024-12-23 00:47 , Processed in 0.254461 second(s), 23 queries .

    Powered by Lean.ren X3.5 Licensed  © 2001-2030 LEAN.REN