注释语句是用来说明程序中某些语句的功能和作用;VBA 中有两种方法标识为注释语句。
单引号 ' 举例:' 定义全局变量;可以位于别的语句之尾,也可单独一行。Rem 举例:Rem 定义全局变量;只能单独一行
以下列举出了不同级别的注释代码
1. 源码概要注释/Source version Comments Code
在每个source文件的最开头
'--------------------------------------' Creation date : 03/05/2017 (cn)' Last update : 11/28/2018 (cn)' Author(s) : Sekito.Lv' Contributor(s):' Tested on Excel 2016'--------------------------------------
2. 区块注释/Use Title Blocks Comments code for Each Macro
在每个Function或者Sub上下,根据个人风格,可以在紧贴在函数上面一行处, 也可以在函数名的下面一行处。
'=======================================================' Program: DoMemoData' Desc: Writes memo data to the memo sheet' Called by: PrintControl' Call: DoMemoData wbkReport, oStopRow' Arguments: wbkReport--Name of the report workbook' oStopRow--Number of the last row to process' Comments: (1) RunReport initializes the m_oMemoRowNum' variable' (2) wksMemo doesn't need to be static. And' it's over-defined. Fix this at some' point.' Changes----------------------------------------------' Date Programmer Change' 11/26/2018 Sekito.Lv Written' 11/28/2018 Sekito.Lv Re-set memo object. This is' needed at times in Excel 8' when the report workbook must' close then re-open.'=======================================================Sub DoMemoData(wbkReport As Workbook, oStopRow As Long)
3. 行内注释/Use In-Line Comments
' If this routine was called by the batch routine...If g_bCalledByBatch Then 'Get the reference of the changing date cell sDateRef = GetNameVal("ChgDateCell", 0, g_nReference) ' If the date name is empty, return null sDateFormula If sDateRef = g_sNull Then sDateFormula = g_sNull ' Else, get the beginning formula in the date cell Else sDateFormula = m_wbkReport.Worksheets(1). _ Evaluate(sDateRef).Formula End IfElse
4. 函数列表注释/List of Function Comments
一般紧挨着源码概要注释下面,与其空一行到两行
'-------------------------------------' List of functions :' - 1 - PublicHolidayFr' - 2 - WorkingDay' - 3 - WorkableDay' - 4 - NextWorkingDay' - 5 - NextWorkableDay' - 6 - PrevWorkingDay'-------------------------------------
1.9 补充
- 在vba中使用 '进行代码注释
- 在很长的语句中使用_来分割成多行
- 在有很多嵌套判断中,代码的可读性会变得很差,一般需要返回的内容及时返回,减少嵌套
- Sub中默认按引用传递参数,所以注意使用,一般不要对外面的变量进行修改,将封装保留在内部
- Dim和Set的关系及区分
很明显的是 vba中使用Dim设定变量类型,Set将对象引用赋值给变量
' 将Range对象赋值给变量rgDim rg As Range ' 声明rg为Range对象Set rg = Range("A1") ' 设定rg为Range("A1")的引用,之后操作rg和操作Range("A1")一样了' 如果不使用Set,下面的代码将报错Dim rg As Rangerg = Range("A1") ' 这段代码将报错' 在非显示声明rg的前提下,下面的代码将会得到不一样的结果rg = Range("A1") ' rg将会是Range("A1")的内容,rg的类型将会是一种基本类型,Integer/String等Set rg = Range("A1") ' 这种情况下,rg将会是Range对象
- VBA中变量用Dim定义和不用Dim定义而直接使用有何区别?
用Dim语句声明变量就是定义该变量应存储的数据类型; 如果不指定数据类型或对象类型,也就是不用Dim定义,且在模块中没有 Deftype 语句, 则该变量按缺省设置是 Variant 类型。
- VBA中用Set赋值和不用Set赋值有什么区别?
给普通变量赋值使用Let,Let 可以省略。
给对象变量赋值使用Set,Set 不能 省略。
Sub AssignString() Dim strA As String Dim strB As String strA = "hello" ' 本句也可写成 LET strA = "hello" Set strB = "hello" ' 错误写法/Compile errorEndSub
神器放送
VBA编程神器 VBA代码助手 可以极大提高编程速度,降低编程门槛欢迎使用
私信回复 代码助手 即可获得
用法 输入 字典+空格 即可看到如下提示 也可输入 dic+空格 zd+空格 均可得到提示
本提示数据库可完全自定义!
更多功能请大家探索