End Sub

Option Explicit 的作用为:声明所有变量都需要先定义才能使用,否则程序在使用了未经定义的变量时就会报错'。 因VB中并不要求显示定义变量,即变量可以不经定义直接使用.

打开工作簿

Sub OpenWorkbooks()
   Workbooks.Open("C:\users\Documents\我是新建的工作簿名.xlsx")   '可以使用Open方法打开指定的工作簿,注意路径要填写完整'
End Sub     '运行完成后将打开该工作簿'

返回当前工作簿的路径

Sub GetWorkbooksPath()
   Application.ActiveWorkbook.Path           '返回当前激活工作簿路径'  
   Application.ActiveWorkbook.FullName       '返回当前激活工作簿路径及名称'  
   pplication.ActiveWorkbook.Name            '返回当前激活工作簿文件名'  
End Sub

VBA工作表

  • 第N个工作表 Worksheets(N)
  • 指定名称的工作表 Sheets("工作表名")
  • 第N个工作表 SheetN
  • 活动工作表 Activesheets
  • Worksheets与Sheets的区别:Sheets集合代表当前工作簿中的所有工作表,包括图表工作表、对话框工作表和宏表。Worksheets集合仅代表当前工作簿中的所有工作表。
    Sub TestSheetYesNo()
        Dim mySheetName As String, mySheetNameTest As String
        mySheetName = "Sheet4"       '输入需测试的工作表名称'
        On Error Resume Next   
        mySheetNameTest = Worksheets(mySheetName).Name
        If Err.Number = 0 Then
            MsgBox "The sheet named ''" & mySheetName & "'' does exist in this workbook."
            Err.Clear
            MsgBox "The sheet named ''" & mySheetName & "'' does NOT exist in this workbook."
        End If
    End Sub
    

    On Error Resume Next的作用为:随后的程序即便出现"运行时错误"时,也不
    会显示"出错信息",并且会继续运行下去。

    VB提供两个语句和一个对象来处理"运行时错误",即:

    On Error Resume Next 语句 该语句后面程序出现"运行时错误"时,会继续运行程序,仅只对当前函数有用。如果出错,那么Err对象中将放置最近一次出错的信息。
  • On Error Goto 0 语句 该语句后面程序出现"运行时错误"时,会显示"出错信息"并停止程序的执行。 Err对象 使用Err对象来得到错误信息。有重要的属性有三个:Number(错误号-设置或返回指定一个错误的值;Err.Number=0指的是还没有出现错误), Source(错误来源-设置或返回产生错误的对象的名称), Description(错误描述-设置或返回一个描述错误的字符串)。分别是错误号,错误来源,错误描述。

    创建工作表

    Sub TestSheetCreate()
        Dim mySheetName As String, mySheetNameTest As String
        mySheetName = "Sheet4"
        '[可增加判断语句,判断Sheet4是否存在]'
        Worksheets.Add.Name = mySheetName    '该句创建工作表并命名为sheet4'
        MsgBox "The sheet named ''" & mySheetName & "'' did not exist in this workbook but it has been created now."
    End Sub
    

    引用工作表

    ' 1 - 引用1个以上工作表'
    Sub Several() 
     Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Select     '选中表1、2、3'
    End Sub
    '2 - 按索引号引用工作表 
    如果移动、添加或删除工作表, 则索引顺序可能会更改'
    Sub FirstOne() 
        Worksheets(1).Activate    '引用第一个工作表'
        Sheets(4).Activate        '所有类型的工作表 (工作表、图表、模块和对话框工作表)第四张'
    End Sub
    '3 - 通过名称引用工作表'
    Sub ActivateChart() 
      Worksheets("Sheet1").Activate         '激活名称为“Sheet1”工作表'
      Charts("Chart1").Activate             '激活名称为“Sheet1”图表'
      DialogSheets("Dialog1").Activate      '激活名称为“Dialog1”对话框工作表'
    Sheets("Chart1").Activate 
    End Sub
    

    VBA单元格

  • Range 引用单元格和单元格区域
    Range('A1')=Cells(1,'A') =[A1] 单元格A1三种表示方法
    Range('A1:B5') 从单元格A1到B5区域
    Range('A1:B5,B1:B7') 多块的选定区域
  • Cells (行号,列号)
    Range(cell(1,1),cells(30,1))=Range('A1:A30') 从单元格A1到A30区域
  • Seletion 当前被选取的区域
  • 引用单元格

    '1 - 引用工作表上的所有单元格'
    Sub ClearSheet() 
      Worksheets("Sheet1").Cells.ClearContents     '清除Sheet1所有单元格'
    End Sub
    '2 - 使用 A1 表示法引用单元格和区域'
    Sub FormatRange() 
     Workbooks("Book1").Sheets("Sheet1").Range("A1:D5") _ 
     .Font.Bold = True 
    End Sub
    
    '3 - 使用 Range 对象引用单元格'
    Sub Random() 
     Dim myRange As Range 
     Set myRange = Worksheets("Sheet1").Range("A1:D5") 
     myRange.Formula = "=RAND()" 
     myRange.Font.Bold = True 
    End Sub
    '4 - 使用索引编号来引用单元格'
    Sub EnterValue() 
     Worksheets("Sheet1").Cells(6, 1).Value = 10 
    End Sub
    

    VBA整行、整列

  • Rows('1:1')=Range('1:1')=Row(1) 第一行
    Rows('2:10')=Range('2:10') 第2-10行
  • Columns('A:A')=Range('A:A')=Columns(1) 第一列,A列
  • Range('A:F')=Columns('A:F') A:F列
  • '将活动工作簿中第一张工作表上的第一行、第三行和第五行的字体设置为加粗'
    Sub SeveralRows() 
        Worksheets("Sheet1").Activate 
        Dim myUnion As Range 
        Set myUnion = Union(Rows(1), Rows(3), Rows(5)) 
        myUnion.Font.Bold = True 
    End Sub