分享

Excel2003高级VBA编程宝典

 旅行中的甘蓝 2020-04-08

part3

  • 可以将工作表或者整个工作簿保存为HTML(HyperText Markup Language,超文本标记语言)格式,用Web浏览器就可以访问到。

  • 隐藏公式在激活单元格的时候这些公式不出现在Excel的公示栏中。选择应用公式的单元格,然后在“单元格格式”对话框的“保护”选项卡中,确保选中“隐藏”复选框。

  • 相对引用:这种引用完全是相对的。当复制公式时,单元格引用将调整到它的新位置,例如A1。绝对引用:这种引用完全是绝对的。当复制公式时,单元格引用将不会发生改变,例如$A$1。绝对行引用:这种引用不完全是绝对的。当复制公式时,列部分进行调整,但是行部分不发生改变,例如A$1。绝对列引用:这种引用不完全是绝对的。当复制公式时,行部分进行调整,但是列部分不发生改变,例如$A1。

  • 公式中对单元格和单元格区域的引用,如果要引用另一个工作表中的单元格:=Sheet!A1 1。还可以创建引用另一个工作簿中的单元格的连接公式:=[Budget.xls]Sheet1!A1 1。如果引用中的工作簿名称包括一个或者多个空格:='[Budget For 2003.xls]Sheet1'!A1 A1。如果链接的工作簿被关闭,那么就必须在工作簿引用中添加完整的路径:='C:MSOFFICE\EXCEL\[Budget For 2003.xls]Sheet1'!A1 A1。

  • 假设损坏的文件名称为“Badfile.xls”,先打开一个空白的工作簿,然后在工作簿Sheet1的单元格A1种输入如下公式,进而尝试从工作不文件的Sheet1种回复损坏的数据:='C:Files\[Badfiles.xls]Sheet1'!$A$1。

  • P34R1C1表示法、P36将名称应用于现有的引用、P37交叉名称、P41数组公式等没看懂。

=TRIM(A1) 功能:删除多余的空格;=FIND(' ',B1,1) 功能:定位第一个空格;=FIND(' ',B1,C1 1) 功能:定位第二个空格;=IF(ISERROR(D1),C1,D1) 功能:如果没有第二个空格,则采用第一个空格;=LEFT(B1,C1) 功能:取出第一个空格之前的字符;=RIGHT(B1,LEN(B1)-E1) 功能:取出最后一个空格之后的字符;=F1&G1 功能连接两个单元格的字符

part4

  • 按ctrl N快捷键将不允许选择模板,而是生成一个默认的工作簿。

  • 模板可以存储在本地计算机上的两个位置中:1)XLStart文件夹:这里存储名为Book.xlt和Sheet.xlt的自动模板,也可以将工作簿模板放在这个文件夹中。2)Templates文件夹:存储在这里的工作簿模板将出现在“新建”对话框中。

  • 找Templates文件夹的位置,可以执行下列VBA语句:MsgBox Application.TemplatesPath

part6

  • 在规划满足用户需求的应用程序起始阶段,考虑一些常规的地方,如:1)文件结构;2)数据结构;3)使用工是还是VBA;4)采用加载宏还是XLS文件;5)Excel的版本;6)错误处理;7)使用特性,如果应用程序需要汇总很多数据,可能会考虑使用Excel的数据透视表特性;8)性能问题;9)安全级别。

  • Excel提供了保护工作表和工作表各个部分的几种方法:1)锁定特定的单元格;2)保护整个工作部;3)隐藏特定单元格中的公式;4)锁定工作表上的对象;5)隐藏行、列、工作表和文档;6)将Excel工作簿指定为建议只读;7)指定密码;8)使用密码保护的加载宏。

  • 使得电子表格比较美观和直观:1)在格式、字体、文本大小和颜色上保持一致;2)一个界面或者对话框上不要填满太多信息,比较好的做法是一次只呈现一两组信息;3)不要使用过多的颜色;4)注意数字格式,使用一致的字样、字体大小和边框。

  • 除非确切知道应用程序的用户使用的视频分辨率,否则要使用最低分辨率(800*600像素)模式设计应用程序。可以从VBA使用Windows API调用来确定用户视频分辨率。

part7

  • “视图”-“立即窗口”命令的快捷键为Ctrl G。

  • 如果想把某个模块或者UserForm对象复制到另一个工程中实际上没有必要先导出再导入这个对象。确保两个工程都处于打开状态,然后只需要激活“工程资源浏览器”窗口,再将对象从一个工程拖放到另一个工程中即可。

  • 工程中的每个对象都有一个关联的代码窗口:1)工作簿本身(“工程资源浏览器”窗口中的ThisWorkbook);2)工作簿中的工作簿“Sheet1”或者图表工作表“Chart1”;3)VBA模块;4)一个类模块(这种特殊类型的模块允许创建新的对象类);5)一个用户窗体。

  • 如果编写在工作簿打开时要执行的过程,那么该过程必须位于ThisWorkbook对象的“代码”窗口,而且该过程必须有一个特殊的名称。

  • 把一条很长的指令分解在两行或者更多的行中,要在代码行的末尾加上一个空格和一个下划线字符。

  • 要求变量声明:如果不声明变量,那么所有这些变量都将为Variant数据类型。

  • 使用Tab键而不是空格键缩进代码,使用Shift Tab快捷键取消缩进代码行。

  • 宏录制器不能生成执行循环(也就是重复语句)、给变量赋值、执行条件语句、显示对话框等的代码。

  • 按Alt F11激活VBE窗口,Excel不要最大化,否则将不能同时看到VBE窗口和Excel的窗口。

  • 当选择Excel的“插入”-“批注”命令输入单元格批注的时候,就创建了一个Comment对象。

  • Range('C1:C10 A6:E6') = 3 Excel单元格区域交叉运算符(C10和A6之间的空格表示),进而返回两个单元格区域的较差部分,在这个例子中较差部分是单元格C6,在单元格C6中输入“3“则为如上结果。

part8

  • VBA过程不需要处理任何对象。

  • 对于稍长的代码行,使用VBA的换行连续序列,用空格和下划线表示。

  • VBA变量的名称是不区分大小写的。

  • 如果要测试一个不含某个特殊指令或者一组指令的过程,不用删除这些指令,只要将它们转换为注释即可,方法是在指令开始的地方插入一个单引号。VBE的“编辑”工具栏“设置注释块”、“解除注释块”。

  • 如果希望VBA应用程序运行的速度尽可能的快,就要声明变量。

  • TypeName函数来确定变量的数据类型。

  • Mod运算符返回两个数相除后的余数。

  • 不能使用具有等价的VBA函数的工作表函数,例如VBA不能访问Excel的SQRT工作表函数,因为VBA有它自己函数版本:Sqr。

  • 在VBA中只有一种情况下必须使用GoTo语句,那就是进行错误捕获的时候。

part9

  • 为了使得错误处理过程起作用,必须关闭“发生错误则中断”设置。

  • 使用On Error语句指定错误发生时要采取的措施:1)忽略错误并允许VBA继续执行代码。2)跳转到代码中特殊的错误处理节,进而采取动作。可以在代码中插入如下语句:On Error Resume Next

  • 当缺乏有关特殊方法或者属性的信息时,最好的办法是打开宏录制器,然后在执行某相关的动作时,检查生成的代码。

part10

  • 当创建将用在工作表公式中的自定义函数时,要确保这些代码位于普通的VBA模块中。如果将自定义函数放在Sheet或者ThisWorkbook的代码模块中,那么它们在公式中就不能运转。

part11

  • 删除所有空行

     Sub DeleteEmptyRows()

         Dim LastRow As Long, r As Long

         LastRow = ActiveSheet.UsedRange.Rows.Count

         LastRow = LastRow ActiveSheet.UsedRange.Row - 1

         Application.ScreenUpdating = False

         For r = LastRow To 1 Step -1

            If WorksheetFunction.CountA(Rows(r)) = 0 Then Rows(r).Delete

         Next r

     End Sub

  • Windows API声明必须位于VBA模块的顶部。

  • 为了确定系统是否支持声音,可以使用CanPlauSounds方法。

     If Not Application.CanPlaySounds Then

        MsgBox 'Sorry, sound is not supported on your system.'

        Exit Sub

     End If

part12

  • P328列表框的技巧等没看懂。

  • 由控件的Value函数决定哪个选项卡(或者页)显示在最前面。值为0则显示第一个选项卡,值为1则显示第二个选项卡,依次类推。

  • P348创建向导、P353模仿MsgBox函数等没看懂。

part17

  • P386创建数据透视表等没看懂。

part19

  • 当打开工作簿(或者加载宏)时将触发这种事件并执行Workbook_Open过程。Workbook_Open过程几乎可以做任何事,通常用于以下的任务:显示欢迎消息;打开其他的工作簿;设置自定义菜单或者工具栏;激活某个特殊的工作表或者单元格;确保满足特定的条件;设置某些自动化的特性;设置工作表的ScrollArea属性;为工作表设置UserInterfaceOnly保护。

  • 确定何时打开工作簿,UpdateLogFile过程将打开一个文本文件。如果该文件不存在,就创建它。然后写有关打开的工作簿的关键信息: 文件名及其完整的路径、日期、时间和用户名。Workbook_Open过程将调用Init过程。因此,当工作簿打开时,Init过程就会创建这个对象变量。

part21

  • 可以通过选择“文件”-“打开”命令打开大多数加载宏文件,因为加载宏从来不会是活动工作簿。然而,选择“文件”-“关闭”命令不能关闭加载宏。只能通过推出和重新启动Excel来除去加载宏,或者通过执行VBA代码的方法关闭加载宏。例如:Workbooks('myaddin.x.a').Close  。用”文件“-”打开“命令打开加载宏时,将打开相应的文件,但是并不算正式安装这个加载宏。

part26

  • 潜在的兼容性问题分为5类:1)文件格式问题;2)新特性问题;3)32位与16位的问题;4)Windows与Macintosh的问题;5)国际通用的问题。

part30

  • Internet中有数千个VBA示例,www.j-walk.com/ss/或者在www.google.com网站中搜索。

  • Excel可以用Windows API函数播放WAV和MIDI文件。如果是02或者更高的版本,可以利用新的Speech对象。当执行下面的语句时,将用用户的姓名问候用户:Application.Speech.Speak ('Hello' & Application.UserName)

  • 如果在启动Excel时崩溃,可以试试先删除*.xlb文件。为此,要Excel关闭。然后搜索硬盘中的*.xlb文件(文件名和位置将有所不同)。先创建这个文件的备份副本,然后删除,接着重新启动Excel。

  • VBA使用颜色来区分各种类型的文本:批注、关键字、标识符、带语法错误的语句等。可以通过在VBE中选择“工具”-“选项”命令(在“编辑器格式”选项卡中)调整使用的这些颜色和字体。

  • 除了删除宏以外,还要确保删除了存储它们的VBA模块。

  • 换行连续字符序列实际上包含两个字符:一个下划线和其后的一个空格。

  • 工作簿事件过程(Sub Workbook_Open)必须放在ThisWorkbook对象的代码模块中。工作表事件过程必须放在相应的Sheet对象的代码模块中,如VBE“工程”窗口所示。

  • 按Ctrl Alt F9快捷键强制重算使用了自定义工作表函数的公式。

  • 针对活动工作表并删除所有非公式的单元格的内容(不影响单元格的格式)。

     On Error Resume Next

     Cells.SpecialCells(xlCellTypeConstants, 23).ClearContents

     使用On Error Resume Next可以防止在没有符合要求的单元格时出现错误。

  • 选中某一列或者某一行中的最后一项,可以使用Ctrl Shift 向下箭头键或者Ctrl Shift 向右箭头键,或者VBA代码:Selection.End(xlDown).Select。其他的常量有xlToLeft,xlToRight和xlUp。

  • 编写VBA指令创建一个公式,如果需要在引号引起来的文本中插入引号,使用两组双引号:= '=IF(A1=''Yes'',TRUE,FALSE)'

  • 创建加载宏之后对其修改,先激活VBE(按Alt F11快捷键),然后将ThisWorkbook对象的IsAddIn属性设置为False。对加载宏进行修改,然后把IsAddIn属性设置为True,最后重新保存文件。

part31

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多