Excel VBA中对workbook、worksheet、range的选择和操作

Workbooks对象是Microsoft Excel 应用程序中当前打开的所有 Workbook 对象的集合。有close、add、open等方法。

Workbooks.close

' ↑ 关闭所有打开的工作簿。

Workbooks.Add

' ↑ 创建一个新工作簿。

Workbooks.open Filename:="TEST.XLSX", ReadOnly:=True

' ↑ 将文件TEST.XLSX打开为只读工作簿

Workbook对象是一个Microsoft Excel 工作簿。有Name、Path等属性。有SaveAs等方法。有Open、Activate等事件。

  • ThisWorkbook属性返回运行Visual Basic代码的工作簿。当Visual Basic代码是加载宏的组成部分时,返回加载宏的工作簿,而非调用该加载宏的工作簿。
  • ActiveWorkbook属性返回当前处于活动状态的工作簿。
  • 使用 Workbooks(index)(其中 index 是工作簿名称或索引号)可返回一个 Workbook 对象。index指创建或打开工作簿的顺序。Workbooks(1) 是创建的第一个工作簿,而 Workbooks(Workbooks.Count)Workbooks返回最后一个打开的工作簿。激活某工作簿并不更改其索引号。所有工作簿均包括在索引计数中,即便是隐藏工作簿也是。

Workbooks(1).Activate

' ↑ 激活工作簿一(创建或打开的第一个工作簿)。

Workbooks("TEST.xlsx").Worksheets("Sheet1").Activate

' ↑ 激活名为“TEST.xlsx”的工作簿(该工作簿必须已经在 Microsoft Excel 中打开)中的 Sheet1。

ActiveWorkbook.Author = "Jean Selva"

' ↑ 设置活动工作簿作者的名称。

Sheets集合是指定的或者活动工作簿中所有的工作表(图表工作表Chart和工作表Worksheet)的集合。有Add等方法。

  • 使用 Sheets(index)(其中 index 是工作表名称或索引号)可返回一个 Chart 或 Worksheet 对象。工作表索引号指示该工作表在工作簿的标签栏上的位置。Worksheets(1) 是工作簿中第一个(最左边的)工作表,而 Worksheets(Worksheets.Count) 是最后一个。所有工作表均包括在索引计数中,即便是隐藏工作表也是。
  • 使用 Sheets(array) 可指定多个工作表。

Sheets(1).Activate

' ↑ 激活活动工作簿中的工作表二。

Sheets("sheet1").Activate

' ↑ 激活活动工作簿中名为“Sheet1”的工作表。

Sheets(Array("Sheets4", "Sheet5")).Move before:=Sheets(1)

' ↑ 将名为"Sheet4"和"Sheet5"的工作表移到活动工作簿的开头。

Worksheets对象是指定的或者活动工作簿中所有WorkSheet对象的集合。有Add等方法。

  • 使用 Worksheets(index)(其中 index 是工作表索引号或名称)可返回一个 Worksheet 对象。工作表索引号指示该工作表在工作簿的标签栏上的位置。Worksheets(1) 是工作簿中第一个(最左边的)工作表,而 Worksheets(Worksheets.Count) 是最后一个。所有工作表均包括在索引计数中,即便是隐藏工作表也是。

Worksheets.move After:=Sheets(SHeets.Count)

' ↑ 将所有工作表都移到工作簿的尾部,即将图表工作表都放在工作表之前。

Worksheets.Add count:=2, Before:=Sheets(1)

' ↑ 在活动工作簿的工作表一之前创建两个新工作表。

Worksheets(1).Visible = False

' ↑ 隐藏活动工作簿中的工作表一。

Worksheet对象代表一个工作表。有Name等属性。有Activate、Delete等方法。有Name、Cells等属性。有Activate、Change等事件。

  • 使用 Worksheets(index)(其中 index 是工作表索引号或名称)可返回一个 Worksheet 对象。工作表索引号指示该工作表在工作簿的标签栏上的位置。Worksheets(1) 是工作簿中第一个(最左边的)工作表,而 Worksheets(Worksheets.Count) 是最后一个。所有工作表均包括在索引计数中,即便是隐藏工作表也是。工作表名称是工作表的标签上显示的名称。
  •  ActiveSheet 属性返回当前处于活动状态的工作表。如果没有活动的工作表,则返回Nothing。

Range对象代表某一单元格、某一行、某一列、某一选定区域(可包含一个或多个连续单元格区域)或某一三维区域。有Clear、Copy等方法。有Cells、Value、Font等属性。

Range("A1).Value = "test"

' ↑ 将活动表上的A1单元格赋值为“test”。如果活动表不是工作表,则失败。

Worksheets("sheet1").Range("A5").Value = "test"

' ↑ 将活动工作簿中名为“Sheet1”的工作表上的A1单元格赋值为“test”。字母大写或小写都可以。

Worksheets("Sheet1").Range("A1:H8").Formula = "=Rand()"

 ' ↑ 为活动工作簿中名为“Sheet1”的工作表上的区域A1:H8中的每个单元格设置公式。

Worksheets(1).Range("Criteria").ClearContents

 ' ↑ 清除区域名为“Critiria”的区域中的内容。

Range("1:4").Select

' ↑ 选择第1到4行

Range("A:C").Select

' ↑ 选择A到C列

Range("A:C").EntireColumn.Insert

' ↑ 在第1列左边插入三列空白列

  • 使用 Cells(row, column)(其中 row 是行号,column 是列标)可返回一个单元格。当工作表激活以后,使用 Cells 属性时不必明确声明工作表(它将返回活动工作表上的单元格)。column列标可以是字母格式的,例如Cells(1,"A");也可以是数字格式的。row行号和column列标可以为变量。

Worksheets("sheet1").Cells(1,1).Value = "test"

' ↑ 将活动工作簿中名为“Sheet1”的工作表上的A1单元格赋值为“test”。

  • 使用 Range(cell1, cell2)(其中 cell1 和 cell2 是指定起始和终止单元格的 Range 对象)可返回一个 Range 对象。

Worksheets(1).Range(Worksheets(1).Cells(1,1), Worksheets(1).Cells(10,10)).Borders.LineStyle = xlThick

 ' ↑ 设置单元格区域A1:J10的边框线条的样式。如果Cells之前没有句点及其左边的对象(对象识别符),Cells 属性将返回活动工作表上的单元格。

  • 使用 expression.Cells(row, column)(其中 expression 是返回 Range 对象的表达式,row 和 column 是相对于该区域左上角的偏移量)可返回区域中的一部分。

Worksheets("Sheets1").Range("A5:H8").Cells(1,1).Formula = "=Rand()"

' ↑ 为A5单元格设置公式。

  • 使用Union可返回多块区域,即该区域由多个连续的单元格区域所组成。

Union(Range("A1:B2", Range(C3:D4")).Select

' ↑ 选定多块区域。

  • Range.Areas属性将多区域选定内容拆分为单个的Range对象,并将对象返回为一个集合。

x = Selection.Areas.Count

' ↑ 返回多区域选定内容中的连续区域单元格的数量。

  • Range.Row属性返回区域中第一个子区域的第一行的行号。

x = Selection.Row

' ↑ 返回选定区域的行号。

  • Range.Rows属性返回一个Range对象

Worksheets("Sheet1").Rows(3).Delete

x = Selection.Rows.Count

' ↑ 返回选定区域的行数。

  • 可以直接使用单元格地址进行选择和操作,但地址中不可包含变量。

[b7].Select

' ↑ 选定B7单元格。单元格地址用字符串表达,如A1、B3等,字母可小写。注意用中括号括起单元格地址。

[a1:B5].Select

' ↑ 选择单元格区域

[a1:a3,c1:c5].Select

' ↑ 选择多个单元格区域

  • Range.CurrentRegion属性返回一个Range对象,该对象表示当前区域(当前区域是以空行与空列的组合为边界的区域)。

ActiveCell.CurrenRegion.Select

' ↑ 选定活动单元格所在的当前区域。

  • ListObject对象代表工作表中的表格/列表对象(即在工作表中插入表格后形成的列表)。

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$B$2"), , xlYes).Name = "表1"

' ↑ 将活动工作表中的”A1:B2“区域转化为表格,命名为”表1“

ActiveSheet.ListObjects("表1").Name = "表ABC"

' ↑ 将表格名称改为”表ABC”

ActiveSheet.ListObjects("表ABC").Resize Range("$A$1:$B$10")

' ↑ 将表格区域改为”A1:B10“

posted @ 2017-11-09 15:00  Phoebe在行动  阅读(66410)  评论(0编辑  收藏  举报