VBA对象:Workbooks、Worksheets、Range1

发布时间 2023-06-24 11:59:12作者: iZJ"Qq4577105

 Workbooks

打开工作簿

使用 VBA 可以打开指定位置的目标工作簿,使用 Workbooks 集合的 Open 方法。

Sub WB()
    '打开工作簿,需要指定完整的路径、名称、后缀名
    Workbooks.Open "D:\Files\工作簿1.xlsx"
End Sub

新建工作簿

使用 Workbooks 集合的 Add 方法创建新的工作簿:

Sub WB()
    Workbooks.Add
End Sub

保存工作簿

使用 Workbook 的 Save 方法保存工作簿:

Sub WB()
    Workbooks("工作簿1.xlsx").Save
End Sub

上述代码适用于已经手动保存过的代码。如果需要将工作簿另存为新的工作簿,或者第一次保存新创建的工作簿,需要使用 SaveAs 方法,指定保存位置和名称。

Sub WB()
    ActiveWorkbook.SaveAs "D:\我的工作簿.xlsx"
End Sub

关闭工作簿

关闭所有工作簿 Close 方法。

Sub WB()
    Workbooks.Close
End Sub

关闭一个工作簿,使用工作簿的 Close 方法:

Sub WB()
    Workbooks("工作簿1.xlsx").Close
End Sub

上述方法会弹出提示框,询问是否保存更改即将关闭的工作簿。为了不弹出提示框,可以指定是否保存:

Sub WB()
    Workbooks("工作簿1.xlsx").Close True '自动保存更改
    Workbooks("工作簿1.xlsx").Close False '不保存更改
End Sub

 

Worksheets

打开工作表

使用 VBA 可以打开(激活)指定工作表,使用 Worksheets 集合工作表名的 Activate 方法。

Sub WS()
    Worksheets("工作表1").Activate
End Sub

使用工作表的序号的Activate方法。根据从左到右的排列顺序,Excel 会自动为每个工作表设定序号,从1开始。

Sub WS()
    '激活第一个工作表
    Worksheets.Item(1).Activate
    'Item 可以省略
    Worksheets(1).Activate
End Sub

新建工作表

使用 Worksheets 集合的 Add 方法创建新的工作表:

Sub WS()
    Worksheets.Add
    '打印新工作簿的名称
    Debug.Print ActiveSheet.Name
End Sub

删除工作表

使用 Worksheets 集合的 Delete 方法删除指定的工作表:

Sub WS()
    Worksheets("工作表1").Delete
End Sub

重命名工作表

使用工作表的 Name 属性修改名称:

Sub WS()
    Worksheets("工作表1").Delete
End Sub

 

Range

不同单元格区域对象的引用

  • 一个单元格
    range对象在表示单元格的时候不可以像cells(i,j)一样range("ij")或range("i,j"),range(i,j)表示  
Range("C1")   
Cells(1,3)
  • 一次性引用两个单元格
    Range("起始单元格,结束单元格") 
Range("A1,C10")         '分别引用A1和C10这两个单元格 
  • 一次性引用连续范围单元格
    range("起始单元格","结束单元格") 等价于 range("起始单元格:结束单元格")  
    Range("A1" , "D10") 
    Range("A1 : D10")                       '推荐这种
    Range("A1:A4" , "D2:D10")               '从A1到D10结束为止的这一整个连续的区域
    Range(" A1:A4 : D2:D10")                'Range(" "A1:A4 " :"D2:D10" ") 会报错
    Range( Range("A1"), Range("D10") )      '两个参数为左上角和右下角单元格对象,Range(" Range("A1"), Range("D10") ")
  • 一次性引用不连续的范围单元格
    range("起始单元格1:结束单元格1 , 起始单元格2:结束单元格2")
    Range("A1:A4 , D2:D10")  '分别引用B2:B4和D2:D4这两个区域 
  • 引用整行或列
    '引用整行
    Range("1:1")
    '引用连续的整行
        range("1:8")           '等同于Rows("1:8")
    '引用不连续的整行
    Range("1:1 , 3:3 , 8:8")    'Rows("1:1 , 3:3 , 8:8")会报错
    
    '引用整列
    Range("A:A")
    '引用连续的整列
    range("A:D")                '等同于Colunms("A:D")
    '引用不连续的整列
    Range("A:A , C:C, D:D")    'Colunms("A:A , C:C, D:D")会报错