工作表相关的属性和基本操作应用示例

作者&投稿:战鸦 (若有异议请与网页底部的电邮联系)
在编写代码时,经常要引用工作表的名字、知道工作表在工作簿中的位置、增加工作表、删除工作表、复制工作表、移动工作表、重命名工作表,等等。下面介绍与此有关及相关的一些属性和方法示例。
--------------------------------------------------------------------------------
[示例04-01]增加工作表(Add方法)
Sub AddWorksheet()
 MsgBox "在当前工作簿中添加一个工作表"
 Worksheets.Add
 MsgBox "在当前工作簿中的工作表sheet2之前添加一个工作表"
 Worksheets.Add before:=Worksheets("sheet2")
 MsgBox "在当前工作簿中的工作表sheet2之后添加一个工作表"
 Worksheets.Add after:=Worksheets("sheet2")
 MsgBox "在当前工作簿中添加3个工作表"
 Worksheets.Add Count:=3
End Sub
示例说明:Add方法带有4个可选的参数,其中参数Before和参数After指定所增加的工作表的位置,但两个参数只能选一;参数Count用来指定增加的工作表数目。
--------------------------------------------------------------------------------
[示例04-02]复制工作表(Copy方法)
Sub CopyWorksheet()
 MsgBox "在当前工作簿中复制工作表sheet1并将所复制的工作表放在工作表sheet2之前"
 Worksheets("sheet1").Copy Before:=Worksheets("sheet2")
 MsgBox "在当前工作簿中复制工作表sheet2并将所复制的工作表放在工作表sheet3之后"
 Worksheets("sheet2").Copy After:=Worksheets("sheet3")
End Sub
示例说明:Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。
--------------------------------------------------------------------------------
[示例04-03]移动工作表(Move方法)
Sub MoveWorksheet()
 MsgBox "在当前工作簿中将工作表sheet3移至工作表sheet2之前"
 Worksheets("sheet3").Move Before:=Worksheets("sheet2")
 MsgBox "在当前工作簿中将工作表sheet1移至最后"
 Worksheets("sheet1").Move After:=Worksheets(Worksheets.Count)
End Sub
示例说明:Move方法与Copy方法的参数相同,作用也一样。
--------------------------------------------------------------------------------
[示例04-04]隐藏和显示工作表(Visible属性)
[示例04-04-01]
Sub testHide()
 MsgBox "第一次隐藏工作表sheet1"
 Worksheets("sheet1").Visible = False
 MsgBox "显示工作表sheet1"
 Worksheets("sheet1").Visible = True
 MsgBox "第二次隐藏工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetHidden
 MsgBox "显示工作表sheet1"
 Worksheets("sheet1").Visible = True
 MsgBox "第三次隐藏工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetHidden
 MsgBox "显示工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetVisible
 MsgBox "第四隐藏工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetVeryHidden
 MsgBox "显示工作表sheet1"
 Worksheets("sheet1").Visible = True
 MsgBox "第五隐藏工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetVeryHidden
 MsgBox "显示工作表sheet1"
 Worksheets("sheet1").Visible = xlSheetVisible
End Sub
示例说明:本示例演示了隐藏和显示工作表的各种情形。其中,使用xlSheetVeryHidden常量来隐藏工作表,将不能通过选择工作表菜单栏中的“格式”——“工作表”——“取消隐藏”命令来取消隐藏。
--------------------------------------------------------------------------------
[示例04-04-02]
Sub ShowAllSheets()
 MsgBox "使当前工作簿中的所有工作表都显示(即将隐藏的工作表也显示)"
 Dim ws As Worksheet
 For Each ws In Sheets
   ws.Visible = True
 Next ws
End Sub
--------------------------------------------------------------------------------
[示例04-05]获取工作表数(Count属性)
[示例04-05-01]
Sub WorksheetNum()
 Dim i As Long
 i = Worksheets.Count
 MsgBox "当前工作簿的工作表数为:" Chr(10) i
End Sub
--------------------------------------------------------------------------------
[示例04-05-02]
Sub WorksheetNum()
 Dim i As Long
 i = Sheets.Count
 MsgBox "当前工作簿的工作表数为:" Chr(10) i
End Sub
示例说明:在一个包含图表工作表的工作簿中运行上述两段代码,将会得出不同的结果,原因是对于Sheets集合来讲,工作表包含图表工作表。应注意Worksheets集合与Sheets集合的区别,下同。
--------------------------------------------------------------------------------
[示例04-06]获取或设置工作表名称(Name属性)
[示例04-06-01]
Sub NameWorksheet()
 Dim sName As String, sChangeName As String
 sName = Worksheets(2).Name
 MsgBox "当前工作簿中第2个工作表的名字为:" sName
 sChangeName = "我的工作表"
 MsgBox "将当前工作簿中的第3个工作表名改为:" sChangeName
 Worksheets(3).Name = sChangeName
End Sub
示例说明:使用Name属性可以获取指定工作表的名称,也可以设置工作表的名称。
Sub ReNameSheet()
  Dim xStr As String
Retry:
  Err.Clear
  xStr = InputBox("请输入工作表的新名称:" _
, "重命名工作表", ActiveSheet.Name)
  If xStr = "" Then Exit Sub
  On Error Resume Next
  ActiveSheet.Name = xStr
  If Err.Number 0 Then
    MsgBox Err.Number " " Err.Description
    Err.Clear
    GoTo Retry
   End If
   On Error GoTo 0
   '.........
End Sub
--------------------------------------------------------------------------------
[NextPage][示例04-07]激活/选择工作表(Activate方法和Select方法)
[示例04-07-01]
Sub SelectWorksheet()
 MsgBox "激活当前工作簿中的工作表sheet2"
 Worksheets("sheet2").Activate
 MsgBox "激活当前工作簿中的工作表sheet3"
 Worksheets("sheet3").Select
 MsgBox "同时选择工作簿中的工作表sheet2和sheet3"
 Worksheets(Array("sheet2", "sheet3")).Select
End Sub
示例说明:Activate方法只能激活一个工作表,而Select方法可以同时选择多个工作表。
--------------------------------------------------------------------------------
[示例04-07-02]
Sub SelectManySheet()
 MsgBox "选取第一个和第三个工作表."
 Worksheets(1).Select
 Worksheets(3).Select False
End Sub
--------------------------------------------------------------------------------
[示例04-08]获取当前工作表的索引号(Index属性)
Sub GetSheetIndex()
 Dim i As Long
 i = ActiveSheet.Index
 MsgBox "您正使用的工作表索引号为" i
End Sub
--------------------------------------------------------------------------------
[示例04-09]选取前一个工作表(Previous属性)
Sub PreviousSheet()
 If ActiveSheet.Index 1 Then
   MsgBox "选取当前工作簿中当前工作表的前一个工作表"
   ActiveSheet.Previous.Activate
 Else
   MsgBox "已到第一个工作表"
 End If
End Sub
示例说明:如果当前工作表是第一个工作表,则使用Previous属性会出错。
--------------------------------------------------------------------------------
[示例04-10]选取下一个工作表(Next属性)
Sub NextSheet()
 If ActiveSheet.Index Worksheets.Count Then
   MsgBox "选取当前工作簿中当前工作表的下一个工作表"
   ActiveSheet.Next.Activate
 Else
   MsgBox “已到最后一个工作表”
 End If
End Sub
示例说明:如果当前工作表是最后一个工作表,则使用Next属性会出错。
--------------------------------------------------------------------------------
[示例04-11]工作表行和列的操作
[示例04-11-01]隐藏行
Sub HideRow()
 Dim iRow As Long
 MsgBox "隐藏当前单元格所在的行"
 iRow = ActiveCell.Row
 ActiveSheet.Rows(iRow).Hidden = True
 MsgBox "取消隐藏"
 ActiveSheet.Rows(iRow).Hidden = False
End Sub
--------------------------------------------------------------------------------
[示例04-11-02]隐藏列
Sub HideColumn()
 Dim iColumn As Long
 MsgBox "隐藏当前单元格所在列"
 iColumn = ActiveCell.Column
 ActiveSheet.Columns(iColumn).Hidden = True
 MsgBox "取消隐藏"
 ActiveSheet.Columns(iColumn).Hidden = False
End Sub
--------------------------------------------------------------------------------
[示例04-11-03]插入行
Sub InsertRow()
 Dim rRow As Long
 MsgBox "在当前单元格上方插入一行"
 rRow = Selection.Row
 ActiveSheet.Rows(rRow).Insert
End Sub
--------------------------------------------------------------------------------
[示例04-11-04]插入列
Sub InsertColumn()
 Dim cColumn As Long
 MsgBox "在当前单元格所在行的左边插入一行"
 cColumn = Selection.Column
 ActiveSheet.Columns(cColumn).Insert
End Sub
--------------------------------------------------------------------------------
[示例04-11-05]插入多行
Sub InsertManyRow()
 MsgBox "在当前单元格所在行上方插入三行"
 Dim rRow As Long, i As Long
 For i = 1 To 3
   rRow = Selection.Row
   ActiveSheet.Rows(rRow).Insert
 Next i
End Sub
--------------------------------------------------------------------------------
[示例04-11-06]设置行高
Sub SetRowHeight()
 MsgBox "将当前单元格所在的行高设置为25"
 Dim rRow As Long, iRow As Long
 rRow = ActiveCell.Row
 iRow = ActiveSheet.Rows(rRow).RowHeight
 ActiveSheet.Rows(rRow).RowHeight = 25
 MsgBox "恢复到原来的行高"
 ActiveSheet.Rows(rRow).RowHeight = iRow
End Sub
--------------------------------------------------------------------------------
[示例04-11-07]设置列宽
Sub SetColumnWidth()
 MsgBox "将当前单元格所在列的列宽设置为20"
 Dim cColumn As Long, iColumn As Long
 cColumn = ActiveCell.Column
 iColumn = ActiveSheet.Columns(cColumn).ColumnWidth
 ActiveSheet.Columns(cColumn).ColumnWidth = 20
 MsgBox "恢复至原来的列宽"
 ActiveSheet.Columns(cColumn).ColumnWidth = iColumn
End Sub
--------------------------------------------------------------------------------
[示例04-11-08]恢复行高列宽至标准值
Sub ReSetRowHeightAndColumnWidth()
 MsgBox "将当前单元格所在的行高和列宽恢复为标准值"
 Selection.UseStandardHeight = True
 Selection.UseStandardWidth = True
End Sub
--------------------------------------------------------------------------------
[示例04-12]工作表标签
[示例04-12-01] 设置工作表标签的颜色
Sub SetSheetTabColor()
 MsgBox "设置当前工作表标签的颜色"
 ActiveSheet.Tab.ColorIndex = 7
End Sub
--------------------------------------------------------------------------------
[示例04-12-01]恢复工作表标签颜色
Sub SetSheetTabColorDefault()
 MsgBox "将当前工作表标签颜色设置为默认值"
 ActiveSheet.Tab.ColorIndex = -4142
End Sub
--------------------------------------------------------------------------------
[示例04-12-03]交替隐藏或显示工作表标签
Sub HideOrShowSheetTab()
 MsgBox "隐藏/显示工作表标签"
 ActiveWindow.DisplayWorkbookTabs = Not ActiveWindow.DisplayWorkbookTabs
End Sub
--------------------------------------------------------------------------------
[NextPage][示例04-13]确定打印的页数(HPageBreaks属性与VPageBreaks属性)
Sub PageCount()
 Dim i As Long
 i = (ActiveSheet.HPageBreaks.Count + 1) * (ActiveSheet.VPageBreaks.Count + 1)
 MsgBox "当前工作表共" i "页."
End Sub
--------------------------------------------------------------------------------
[示例04-14]保护/撤销保护工作表
[示例04-14-01]
Sub ProtectSheet()
 MsgBox "保护当前工作表并设定密码"
 ActiveSheet.Protect Password:="fanjy"
End Sub
示例说明:运行代码后,当前工作表中将不允许编辑,除非撤销工作表保护。
--------------------------------------------------------------------------------
[示例04-14-02]
Sub UnprotectSheet()
 MsgBox "撤销当前工作表保护"
 ActiveSheet.Unprotect
End Sub
示例说明:运行代码后,如果原保护的工作表设置有密码,则要求输入密码。
--------------------------------------------------------------------------------
[示例04-14-03]保护当前工作簿中的所有工作表
Sub ProtectAllWorkSheets()
 On Error Resume Next
 Dim ws As Worksheet
 Dim myPassword As String
 myPassword = InputBox("请输入您的密码" vbCrLf _
  "(不输入表明无密码)" vbCrLf vbCrLf _
  "确保您没有忘记密码!", "输入密码")
 For Each ws In ThisWorkbook.Worksheets
   ws.Protect (myPassword)
 Next ws
End Sub
--------------------------------------------------------------------------------
[示例04-14-04]撤销对当前工作簿中所有工作表的保护
Sub UnprotectAllWorkSheets()
 On Error Resume Next
 Dim ws As Worksheet
 Dim myPassword As String
 myPassword = InputBox("请输入您的密码" vbCrLf _
   "(不输入表示无密码)", "输入密码")
 For Each ws In ThisWorkbook.Worksheets
   ws.Unprotect (myPassword)
 Next ws
End Sub
--------------------------------------------------------------------------------
[示例04-14-05]仅能编辑未锁定的单元格
Sub OnlyEditUnlockedCells()
 Sheets("Sheet1").EnableSelection = xlUnlockedCells
 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
示例说明:运行本代码后,在当前工作表中将只能对未锁定的单元格进行编辑,而其它单元格将不能编辑。未锁定的单元格是指在选择菜单“格式——单元格”命令后所弹出的对话框中的“保护”选项卡中,未选中“锁定”复选框的单元格或单元格区域。
--------------------------------------------------------------------------------
[示例04-15]删除工作表(Delete方法)
Sub DeleteWorksheet()
 MsgBox "删除当前工作簿中的工作表sheet2"
 Application.DisplayAlerts = False
 Worksheets("sheet2").Delete
 Application.DisplayAlerts = True
End Sub
示例说明:本示例代码使用Application.DisplayAlerts = False来屏蔽弹出的警告框。
--------------------------------------------------------------------------------
一些编程方法和技巧
[示例04-16] 判断一个工作表(名)是否存在
[示例04-16-01]
Sub testWorksheetExists1()
 Dim ws As Worksheet
 If Not WorksheetExists(ThisWorkbook, "sheet1") Then
   MsgBox "不能够找到该工作表", vbOKOnly
   Exit Sub
 End If
 MsgBox "已经找到工作表"
 Set ws = ThisWorkbook.Worksheets("sheet1")
End Sub
'- - - - - - - - - - - - - - - - - - -
Function WorksheetExists(wb As Workbook, sName As String) As Boolean
 Dim s As String
 On Error GoTo ErrHandle
 s = wb.Worksheets(sName).Name
 WorksheetExists = True
 Exit Function
ErrHandle:
 WorksheetExists = False
 End Function
示例说明:在测试代码中,用相应的工作簿名和工作表名分别代替“ThisWorkbook”和“Sheet1”,来判断指定工作表是否在工作簿中存在。
--------------------------------------------------------------------------------
[示例04-16-02]
Sub testWorksheetExists2()
 If Not SheetExists("工作表名") Then
   MsgBox "工作表名 不存在!"
 Else
   Sheets("工作表名").Activate
 End If
End Sub
'- - - - - - - - - - - - - - - - - - -
Function SheetExists(SheetName As String) As Boolean
 SheetExists = False
 On Error GoTo NoSuchSheet
 If Len(Sheets(SheetName).Name) 0 Then
   SheetExists = True
   Exit Function
 End If
NoSuchSheet:
End Function
示例说明:在代码中,用实际工作表名代替。
--------------------------------------------------------------------------------
[示例04-16-03]
Sub TestingFunction()
'如果工作表存在则返回True,否则为False
 '测试DoesWksExist1函数
 Debug.Print DoesWksExist1("Sheet1")
 Debug.Print DoesWksExist1("Sheet100")
 Debug.Print "-----"
 '测试DoesWksExist2函数
 Debug.Print DoesWksExist2("Sheet1")
 Debug.Print DoesWksExist2("Sheet100")
End Sub
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Function DoesWksExist1(sWksName As String) As Boolean
 Dim i As Long
 For i = Worksheets.Count To 1 Step -1
   If Sheets(i).Name = sWksName Then
     Exit For
   End If
 Next
 If i = 0 Then
   DoesWksExist1 = False
 Else
   DoesWksExist1 = True
 End If
End Function
‘- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Function DoesWksExist2(sWksName As String) As Boolean
 Dim wkb As Worksheet
 On Error Resume Next
 Set wkb = Sheets(sWksName)
 On Error GoTo 0
 DoesWksExist2 = IIf(Not wkb Is Nothing, True, False)
End Function
--------------------------------------------------------------------------------
[示例04-17]排序工作表
[示例04-17-01]
Sub SortWorksheets1()
 Dim bSorted As Boolean
 Dim nSortedSheets As Long
 Dim nSheets As Long
 Dim n As Long
 nSheets = Worksheets.Count
 nSortedSheets = 0
 Do While (nSortedSheets nSheets) And Not bSorted
   bSorted = True
   nSortedSheets = nSortedSheets + 1
   For n = 1 To nSheets - nSortedSheets
     If StrComp(Worksheets(n).Name, Worksheets(n + 1).Name, vbTextCompare) 0 Then
Worksheets(n + 1).Move Before:=Worksheets(n)
bSorted = False
     End If
   Next n
  Loop
End Sub
示例说明:本示例代码采用了冒泡法排序。
--------------------------------------------------------------------------------
[示例04-17-02]
Sub SortWorksheets2()
 '根据字母对工作表排序
 Dim i As Long, j As Long
 For i = 1 To Sheets.Count
   For j = 1 To Sheets.Count - 1
     If UCase$(Sheets(j).Name) UCase$(Sheets(j + 1).Name) Then
Sheets(j).Move After:=Sheets(j + 1)
     End If
   Next j
 Next i
End Sub
--------------------------------------------------------------------------------
[示例04-17-03]
Sub SortWorksheets3()
'以升序排列工作表
 Dim sCount As Integer, i As Integer, j As Integer
 Application.ScreenUpdating = False
 sCount = Worksheets.Count
 If sCount = 1 Then Exit Sub
 For i = 1 To sCount - 1
   For j = i + 1 To sCount
     If Worksheets(j).Name Worksheets(i).Name Then
Worksheets(j).Move Before:=Worksheets(i)
     End If
   Next j
 Next i
End Sub
示例说明:若想排序所有工作表,将代码中的Worksheets替换为Sheets。
--------------------------------------------------------------------------------
[示例04-18]删除当前工作簿中的空工作表
Sub Delete_EmptySheets()
   Dim sh As Worksheet
   For Each sh In ThisWorkbook.Worksheets
     If Application.WorksheetFunction.CountA(sh.Cells) = 0 Then
     Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
     End If
   Next
End Sub

~

电子表格的应用
答:(6)、跨表操作数据 设有名称为Sheet1、Sheet2和Sheet3的三张工作表,现要用Sheet1的D8单元格的内容乘以40%,再加上Sheet2的B8单元格内容乘以60%作为Sheet3的A8单元格的内容。则应该在Sheet3的A8单元格输入以下算式:=Sheet1!D8*40%+Sheet2!B8*60%。 (7)、两次选定单元格 有时,我们需要在某个单元格内...

excel表格的基本操作 为什么在表格中输入18位数字后面的2位会变成0
答:excel 表格的基本操作 一、基本方法 1. 快速选中全部工作表 右键单击工作视窗下面的工作表标签,在弹出的选单中选择“选定全部 工作表”命令即可()。 2. 快速启动Excel 如果想在启动系统自动执行Excel,可以这样操作: 1.双击“我的电脑”图示,进入Windows 目录,依次开启“Start Menu\Programs\启动”资料夹; 2.开启...

在word中如何做表格教案
答:3.情感态度与价值观:感知生活中应用表格的知识;初步培养学生动手操作的能力及与同伴合作交流的意识能力;培养学生审美能力。【教学重点】制作简单的表格以及表格的美化 【教学难点】表格的行、列、单元格理解与掌握 【教学对象及其实施环境】高一年级 机房 【教学过程及内容】导入:拿出学生的课程表 以“...

职称计算机考试EXCEL操作题
答:4、在考生文件夹下新建一个Excel工作簿,完成以下操作: (1)在原有的3个工作表Sheet1、Sheet2和Sheet3的基础上,在后面依次插入工作表Sheet4、Sheet5和Sheet6。 (2)然后依次删除工作表Sheet2、Sheet4和Sheet6,并使保留下来的工作表Sheet1、Sheet3和Sheet5的标签依次为蓝色、黄色和红色。 完成以上操作后将该工作...

Excel2007公式函数图表入门与实战的内容简介
答:学完《Excel2007公式函数图表入门与实战》您将掌握以下内容:Excel工作薄与工作表的基础操作;图表在市场调查中的应用;函数、图表基础知识;图表在销售、生产管理中的应用;使用函数编辑文本;图表在财务管理中的应用;函数在信息管理中的应用;图表在人力资源规划与管理中的应用;使用函数进行固定资产折旧计算;图表在企划书中的...

怎么制作各种形式的电子表格
答:第3章 公式与函数的应用 一、内容提示 Excel除了可以用于表格制作以外,还可以用于计算分析工作表中的数据。本章主要介绍在工作表中输入公式和使用函数的方法。介绍单元格的引用,以及与公式相关的基本操作,介绍了10种常用函数的应用。二、 考试基本要求 (一)掌握的内容 掌握公式的输入,在公式中引...

用文字描述在excel中下列操作的方法。
答:图10 输入第二张表中的内容 第三讲 设置单元格的格式 与Microsoft Word一样,在中文Excel 2000中也能设置文字的格式,而且此格式将表现在最终的电子表格中。此外,还可以设置其它与数据信息相关的属性,下面的操作将结合“员工工资表”的特点来进行说明,请先单击左下方的Sheet 1标签,返回“员工工资表”。 图11 单击...

Excel是一个电子表格软件,其主要作用是什么
答:在EXCEL 中不必进行编程就能对工作表中的数据进行检索、分类、排序、筛选等操作,利用系统提供的函数可完成各种数据的分析。4、EXCEL 提供了许多张非常大的空白工作表,每张工作表2003版以前是65536行,256列,2007版以后由16384列1048576行和组成。这样大的工作表可以满足大多数数据处理的业务需要。

显示二维表中部分属性属于什么操作?
答:关系模式对关系的描述称为关系模式,其格式为:关系名(属性名1,属性名2,…,属性名n)一个关系模式对应一个关系的结构,它是命名的属性集合。二维表在生活中的应用广泛,例如成绩单、工资表、人员花名册、价格表、物料清单等 excel就是一个二维表,功能强大!!!二维表就是由行列组成的,知道行号列...

Excel2010的主要功能有哪些
答:1、数据记录与整理 在一个Excel文件中可以存储许多独立的表格,我们可以把一些不同类型但是有关联的数据存储到一个Excel文件中,这样不仅可以方便整理数据,还可以方便我们查找和应用数据。后期还可以对具有相似表格框架,相同性质的数据进行合并汇总工作。2、数据加工与计算 在现代办公中对数据的要求不仅仅是...