每一个过程完成一定的任务,所有的过程组合在一起形成程序;

代码可以放在模块(插入),也可以放在工作表对应区域;每个位置都可以放入多个过程或函数,(各工作簿的代码窗口在同一窗口中呈现,可通过工程窗口展开;)

过程查看:开发工具→宏→宏名列表;

VBA程序

VBA程序可以由一个或若干个过程组成,也就是说一个VBA过程可以单独作为一段程序,也可以作为一个大型VBA程序的子程序。

定义一个过程包含的元素:
1 过程声明:Sub...End Sub
2 过程名;
3 参数;
4 语句;
5 注释;

变量

  1. 变量是指在程序执行过程中随时可以改变其值的量,变量没有固定的值,可以随时根据需求赋予新值。所以变量通常用于代替一个未知数,我们在程序中对这个未知数进行操作,而不管这个未知数的值是什么,直到需要时才对未知数进行赋值或者获取该未知数的值。此外变量还有简化录入和提高效率的作用;
  2. 变量声明:Dim;
  3. 变量赋值:用符号:"=",对象变量用set和"="号;
  4. 变量是一个已经命名的存储位置,它包含了程序每个执行阶段所修改的数据。每一变量都有变量名,在其范围内可唯一识别。更通俗地说,变量就是在程序执行可中以随时变化的量。
  5. 变量和常量一样,也具有简化输入和方便识别两个优点,同时变量有一个常量不具备的优点:储存不确定的数据。特别在循环语句中,待处理的数值随时会变量变化,常量不足以满足需求,而只能借助常量。
  6. 静态变量在过程执行完毕后变量的值一直保存在内存中;而动态变量却在程序完成时归零或者返回空值。
  7. 变量名的最后一个字符可以是!#¥%,表示变量的类型;
  8. Dim spr As String

    Dim spr!

代码的存放位置和保存

  1. 工作表事件代码必须存放在对应的工作表的事件代码窗口中;
  2. 工作簿事件代码必须保存在ThisWorkbook代码窗口中;
  3. 类模块相应代码必须存放在类模块中;
  4. 前面三者以外的所有代码存放在标准模块中即可;
  5. 包含宏代码的格式采用xlsm后缀名;
  6. 单独保存代码模块:如bas模块文件,frm窗体文件,cls类模块文件;在代码窗口的资源管理器的文件名右击即可导出;

代码的调用方式

  1. 快捷键调用;
  2. 单击按钮执行:开发工具→插入→按钮(窗体控件)→右击→指定宏;
    (以上两种方法调用过程仅对无参数且未隐藏的sub过程生效,对自定义函数以及有参数的sub过程无效,对通过Private声明为私有过程的sub过程也无效;)
  3. 自动执行:事件过程是VBA中一种特殊的过程,使用快捷键或按钮都无法调用事件过程。事件过程只有在符合事件所指定的条件时自动执行,它不需要人工干预,事件过程包括三项内容:
    1 触发事件的对象;
    2 触发事件的条件;
    (以上两项由事件过程的参数和名称决定,也是VBA预告设置的;)
    3 触发事件后执行的命令:由用户手工录入;
    Private Sub Worksheet_SelectionChange(ByVal_Target As Range)
        MsgBox Target(1).value
    End Sub
    (Target参数,Target代表当前选中的区域;Worksheet_SelectionChange表示在工作表中选择单元格时触发条件;)
  4. 在公式中调用:VBA还有一种Function过程,即自定义函数。此过程可以在VBA嵌套到Sub过程中,即用Sub过程调用Function过程,但是更多的是在单元格中当作公式来运用。

子过程

  1. 子过程标志以Sub开头,子过程之所以称为子过程是因为它可以被另一过程调用,调用子过程;
  2. 子过程的基本语法:
    [Private|Public|Friend][Static] Sub name[(arglist)]
        [statement]
        [Exit Sub]
    [statements]
    End Sub
    [Private|Public|Friend]:指定过程的作用域;
    [Static]:指定过程是动态的还是静态的;
  3. 过程的递归和调用:
    Sub 累加()
        Range("a1")=Range("a1")+1;
        Call 累加
    End Sub
  4. 子过程的命名要求:
    1 首字母不能是数字;
    2 不能含有标点符号及空格;
    3 不能使用系统内置的保留字;
    4 同一个模块中不能与其他过程同名
    5 长度不能超过255;
  5. 子过程的调用:受子过程的声明所限;

其它

  1. 事件代码:先是代码位置→对象列表:worksheet→过程列表:change;会自动产生工作表的Worksheet_change事件的程序外壳。
  2. 长代码换行:" _"(前面有空格);
  3. 注释代码:"'";