四时宝库

程序员的知识宝库

Excel VBA入门教程 1.8 注释语句的用法

注释语句是用来说明程序中某些语句的功能和作用;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 If
Else

4. 函数列表注释/List of Function Comments

一般紧挨着源码概要注释下面,与其空一行到两行

'-------------------------------------
' List of functions :
' - 1  - PublicHolidayFr
' - 2  - WorkingDay
' - 3  - WorkableDay
' - 4  - NextWorkingDay
' - 5  - NextWorkableDay
' - 6  - PrevWorkingDay
'-------------------------------------


1.9 补充

  • 在vba中使用 '进行代码注释
  • 在很长的语句中使用_来分割成多行
  • 在有很多嵌套判断中,代码的可读性会变得很差,一般需要返回的内容及时返回,减少嵌套
  • Sub中默认按引用传递参数,所以注意使用,一般不要对外面的变量进行修改,将封装保留在内部
  • DimSet的关系及区分

很明显的是 vba中使用Dim设定变量类型,Set将对象引用赋值给变量

' 将Range对象赋值给变量rg
Dim rg As Range         ' 声明rg为Range对象
Set rg = Range("A1")    ' 设定rg为Range("A1")的引用,之后操作rg和操作Range("A1")一样了

' 如果不使用Set,下面的代码将报错
Dim rg As Range
rg = 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 error
EndSub

神器放送

VBA编程神器 VBA代码助手 可以极大提高编程速度,降低编程门槛欢迎使用

私信回复 代码助手 即可获得

用法 输入 字典+空格 即可看到如下提示 也可输入 dic+空格 zd+空格 均可得到提示

本提示数据库可完全自定义!



更多功能请大家探索

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接