学习VBA,最重要的是语法,其它的对象、属性等等不需要花费太多时间去记忆,可以借助VBA内部的“自动成员列表”来完成输入。VBA中涉及的语法很多,其中常见有输入输出语句、循环语句、条件语句、With语句及防错语句。如何驾驭好这些语句对于程序员来说一个非常重要的课题。

1 输入、输出语句

1.1 MsgBox()语句;

a 返回运算结果

b 询问执行方式

c 提示执行步骤

d 告知错误原因

1.2 Debug.print

也可以实现信息输出,不过通常开发人员使用。它只能在VBE中的立即窗口显示信息,而终端用户是不需要进入VBE界面的。

If Not Range("A1").comment Is Nothing Then

if IsNull(Range("A1:E10").MergeCells) Then

 

1.3 Inputbox函数是VBA中用于数据输入的函数,它可以在一对话框来中显示提示,等待用户输入信息或按下按钮,返回用户输入的String类型字符串。

Inputbox通常用于为用户提供录入窗口,然后将返窗口中的录入字符串按代码指定方式导入到相应的窗口或者根据输入值来决定后续的操作。

条件判断语句在VBA中也是使用率非常高的语句。?用户在Excel中录制宏时无法如何都无法产生条件语句,必须通过VBE界面手工编写代码,那么了解它的语法就显得犹为重要了。

循环语句(又称控制结构),它可能重复执行一系列代码,从而批量地完成工作任务。循环语句在实际工作中应用极广,且因为循环语句不可能利用录制宏产生,所以必须潜心掌握它的所语法与结构。

语句

  1. 条件分支语句:将代码分成几部分,按条件执行其中的部分;
    循环语句:将代码根据约定的条件执行n次;
  2. If condition Then
      ...
    Else
      ...
    End If
    三类条件,指定两类,两类以外的属于另一类;
  3. Select Case expression
    Case expression or value
      ...
    Case expression or value
      ...
      ...
    Case Else
      ...
    End Select
  4. Case Else不能使用And和Or运算号,只能使用逗号实现or运算的同等功能,但没有其它办法实现And的功能;If then支持And和or运算符;
  5. 条件语句If Then和Select Case语句可以就会所有多条件判断的应用,但是它们都不是函数,不能直接返回值;IIf及Choose函数可以弥补这个缺陷,它们可以根据条件返回指定的值;
  6. For Next语句使原来的单一操作得批量执行;
  7. For counter=start to end [Step step]
      [statements]
    [Exit For]
      [statements]
    Next [counter]
  8. For Each...Next用于对象或循环,即针对一个数组或集合中的每个元素重复执行一组语句;对象集合中有多少个元素,代码就可以执行多少次;如:
    for Each VarFontSt In Range(A1:J10)
      VarFontSt.Font.ColorIndex = 7
      VarFontSt.Font.Size = 16
    Next VarFontSt
  9. Do While condition ... Loop
    Do Until condition ... Loop
    Do ... Loop while condition
    Do ... Loop Until condition
  10. Select Case expression
    Case (is) expression or value
      ...
    Case (is) expression or value : Exit For
    Case (is) expression or value
      ...
      ...
    Case Else
      ...
    End Select

其它

  1. with用于指定对象,对with语句内,被指定了的对象的属性或方法可以直接从"."开始;
  2. 错误转移语句:on Error GoTo 100
    ...
    100:
  3. On Error Resume Next
    ...
    Next
    中间的代码如果有错误时,可以忽略,而不会中断;

插入12个工作表的代码

For i = 1 To 12
Sheets.Add
ActiveSheet.Name = i & "月"
Next i