分享

Worksheet对象应用大全(1)-应用基础

 JT_man 2014-08-12
1 颗星2 颗星3 颗星4 颗星5 颗星 (1 人投票, 平均: 5.00 out of 5)

Worksheet对象代表Excel工作表,Worksheets集合对象代表Excel工作表的集合。下面,我们来探讨Worksheet对象和Worksheets集合的一些属性和方法的应用。

Worksheet(s)对象应用基础

[应用1]激活工作表(Activate方法)
使用Activate方法来激活某工作表,例如:

ThisWorkbook.Worksheets("Sheet1").Activate

上述代码使得含有该代码的工作簿中工作表Sheet1成为活动工作表。
[应用2]增加工作表(Add方法)
使用Worksheets对象的Add方法增加工作表,其语法为:

Worksheets.Add(Before,After,Count,Type)

其中,参数Before指定一个工作表,新增的工作表将放置在该工作表之前。参数After指定一个工作表,新增的工作表将放置在该工作表之后。这两个参数不能同时使用。若两个参数都没有使用,则新增的工作表会放置在当前工作表之前。
参数Count指定增加的工作表数目,默认值为1。参数Type指定增加的工作表类型,为XlSheetType常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet或xlExcel4IntlMacroSheet,默认值为标准工作表(xlWorksheet)。如果希望基于现有模板插入工作表,则指定该模板的路径。
[应用3]复制工作表(Copy方法)
使用Copy方法复制指定的工作表,其语法为:

工作表对象.Copy(Before,After)

其中,参数Before和After均可选,用来指定所复制的工作表放置的位置,但不能同时使用这两个参数。使用参数Before将所复制的工作表放置在该参数指定的工作表之前,同理,使用参数After将所复制的工作表放置在该参数指定的工作表之后。
例如,下面的代码复制当前工作表,并将其放置在所有工作表的末尾:

ActiveSheet.Copy After:=Worksheets(Worksheets.Count)

如果没有指定参数,那么Excel将新建一个工作簿,该工作簿包含所复制的工作表。
[应用4]移动工作表(Move方法)
使用Move方法将工作表移动到工作簿的指定位置,其语法为:

工作表对象.Move(Before,After)

其语法与Copy方法相同。例如,下面的代码将工作表Sheet1移到工作表Sheet3的后面:

Worksheets("Sheet1").Move After:=Worksheets("Sheet3")

[应用5]获取或者设置工作表名称(Name属性)
可以使用Name属性返回指定工作表的名称,也可以设置指定工作表的名称,例如,下面的代码将工作表Sheet1重命名为“示例”:

Worksheets("Sheet1").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

[应用6]使用工作表代码名称(CodeName属性)
工作表对象的CodeName属性返回工作表代码名称,其语法为:

工作表对象.CodeName

能够在属性窗口中设置工作表代码名称。假设我们在属性窗口将工作表Sheet1的代码名称设置为Sheet1CodeName,那么下面的两句代码是等价的:

Worksheets("Sheet1").Activate
Sheet1CodeName.Activate

当我们第一次创建工作表时,工作表名称和代码名称是相同的,然而两个名称可以各自单独修改,但是工作表代码名称仅能在设计时修改而不能在运行时修改。
[应用7]删除工作表(Delete方法)
使用Delete方法删除指定的工作表,其语法为:

工作表对象.Delete

例如,下面的语句删除工作簿中名为“示例”的工作表:

Worksheets("示例").Delete

默认情况下,在删除工作表时会显示一个对话框。此时,Delete方法返回一个布尔值,如果用户单击“取消”则返回False,单击“删除”则返回True。
[应用8]选择工作表(Select方法)
可以使用Select方法选择工作表。与Activate方法不同,使用Select方法可以同时选择多个工作表,例如下面的代码同时选择当前工作表以及索引值为1和2的工作表:

Worksheets(1).Select (False)
Worksheets(2).Select (False)

其语法为:

工作表对象.Select(Replace)

其中,参数Replace可选,设置为True时使用指定的工作表的选区代替当前选择,设置False时扩展当前所选内容以包括以前选择的对象和指定的对象。
[应用9]选择工作表(Previous属性和Next属性)
使用工作表对象的Previous属性选择指定工作表之前的工作表,例如:

Sub PreviousSheet()
    If ActiveSheet.Index <> 1 Then
        MsgBox "选取当前工作簿中当前工作表的前一个工作表"
        ActiveSheet.Previous.Activate
    Else
        MsgBox "已到第一个工作表"
    End If
End Sub

如果当前工作表是第一个工作表,则使用Previous属性会出错。
使用工作表对象的Next属性选择指定工作表之后的工作表,例如:

Sub NextSheet()
    If ActiveSheet.Index <> Worksheets.Count Then
        MsgBox "选取当前工作簿中当前工作表的下一个工作表"
        ActiveSheet.Next.Activate
    Else
        MsgBox "已到最后一个工作表"
    End If
End Sub

如果当前工作表是最后一个工作表,则使用Next属性会出错。
[应用10]获取工作表数(Count属性)
使用集合对象的Count属性来获取工作簿中工作表的数目。例如下面的两段代码:

Sub WorksheetNum()
    Dim i As Long
    i = Worksheets.Count
    MsgBox "当前工作簿的工作表数为:" & Chr(10) & i
End Sub
 
Sub WorksheetNum()
    Dim i As Long
    i = Sheets.Count
    MsgBox "当前工作簿的工作表数为:" & Chr(10) & i
End Sub

在一个包含图表工作表的工作簿中运行上述两段代码,将会得出不同的结果,原因是对于Sheets集合来讲,工作表包含图表工作表。应注意Worksheets集合与Sheets集合的区别。
[应用11]保存工作表(SaveAs方法)
使用SaveAs方法将更改后的工作表保存到另一个文件中,其语法为:

工作表对象.SaveAs(FileName, FileFormat, Password, WriteResPassword, ReadOnlyRecommended, CreateBackup, AddToMru, TextCodepage, TextVisualLayout, Local)

其中,参数FileName用来指定用来保存文件的路径及文件名,若没有包括路径,则保存在当前文件夹中。参数FileFormat指定所保存的文件格式,为XlFileFormat常量之一。参数Password指定在保存文件时用于保护文件的密码,最大可以达到15个字符,区分大小写。参数WriteResPassword指定文件的写保护密码,如果打开文件时没有输入写保护密码,那么该文件将只读。如果将参数ReadOnlyRecommended设置为True,那么在打开文件时显示一条消息,提示该文件以只读方式打开。将参数CreateBackup设置为True,创建备份文件。将参数AddToMru设置为True,添加工作簿到最近使用的文件列表中,默认为False。
[应用12]隐藏工作表(Visible属性)
可以通过将工作表对象的Visible属性设置为True或False,来控制该工作表是否可见。例如,下面的代码隐藏工作表Sheet1:

Worksheets("Sheet1").Visible = False

当然,也可以将Visible属性设置为XlSheetVisibility值:xlSheetVisible、xlSheetHidden、xlSheetVeryHidden,来控制工作表是否可见。其中,xlSheetVisible表示显示工作表,xlSheetHidden表示隐藏工作表,但可以通过菜单命令显示工作表,xlSheetVeryHidden表示隐藏工作表,只能通过代码将Visible属性设置为True来显示工作表,此时用户无法使工作表可见。
下面的代码新建一张工作表,然后将其Visible属性设为xlVeryHidden。要引用该工作表,可使用其对象变量newSheet。

Set NewSheet = Worksheets.Add
NewSheet.Visible = xlVeryHidden
NewSheet.Range("A1:D4").Formula = "=RAND()"

下面的代码取消隐藏工作簿中所有工作表。

Sub UnhideAllWorksheets()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
    Next ws
    Set ws = Nothing
End Sub

[应用13]保护工作表(Protect方法)
使用Protect方法保护工作表,以防止被修改。其语法为:

工作表对象.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)

其中,参数Password指定用于保护工作表的密码,区分大小写。设置参数DrawingObjects为True以保护形状,默认值为False。设置参数Contents为True,以保护内容,对于图表则会保护整个图表,对于工作表则会保护锁定的单元格,默认值是True。参数Scenarios设置为True以保护方案,此参数仅对工作表有效,默认值是True。
Protect方法允许单独保护单元格以免被用户和代码修改。特别地,如果参数UserInterfaceOnly设置为True,那么用户不能修改工作表,但能够通过代码修改。相反,如果参数UserInterfaceOnly设置为False(默认值),那么用户和代码都不能修改工作表。
注意,当保护工作表时,如果参数UserInterfaceOnly设置为True,然后又保存工作簿,那么再次打开该工作簿时,整张工作表将被完全保护,而不仅仅保护用户界面。要在打开工作簿后重新启用用户界面保护,必须再次将UserInterfaceOnly参数设为True并应用Protect方法。
[应用14]是否仅启用用户界面保护(ProtectionMode)
如果开启了用户界面保护,则ProtectionMode属性返回True。默认值为False。
[应用15]取消密码保护(Unprotect方法)
使用Unprotect方法取消工作表的密码保护,如果工作表没有密码保护则无效。其语法为:

工作表对象.Unprotect(Password)

其中,参数Password代表用来保护工作表的密码。如果工作表有密码保护,而我们忽略此参数,那么Excel将提示用户输入密码。
[示例1]设置密码保护工作表

Sub ProtectSheet()
    MsgBox "保护当前工作表并设定密码"
    ActiveSheet.Protect Password:="fanjy"
End Sub

运行上述代码后,当前工作表中将不允许编辑,除非撤销工作表保护。
[示例2]撤销工作表保护

Sub UnprotectSheet()
    MsgBox "撤销当前工作表保护"
    ActiveSheet.Unprotect
End Sub

运行上述代码后,如果原保护的工作表设置有密码,则要求输入密码。
[示例3]保护当前工作簿中的所有工作表

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

[示例4]撤销对当前工作簿中所有工作表的保护

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

[示例5]仅能编辑未锁定的单元格

Sub OnlyEditUnlockedCells()
    Sheets("Sheet1").EnableSelection = xlUnlockedCells
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

运行上述代码后,在当前工作表中将只能对未锁定的单元格进行编辑,而其它单元格将不能编辑。未锁定的单元格是指在选择菜单“格式——单元格”命令后在弹出的对话框中的“保护”选项卡中,未选中“锁定”复选框的单元格或单元格区域。
[应用16]打印预览工作表(PrintPreview方法)
使用PrintPreview方法完成打印预览功能,即按对象打印后的外观效果显示对象的预览。其语法为:

工作表对象.PrintPreview(EnableChanges)

其中,参数EnableChanges指定用户是否可更改边距和打印预览中可用的其他页面设置选项。
[应用17]打印工作表(Print方法)
使用Print方法打印工作表,其语法为:

工作表对象.PrintOut(From, To, Copies, Preview, ActivePrinter, PrintToFile, Collate, PrToFileName, IgnorePrintAreas)

其中,参数From指定打印的第一页的页码,参数To指定打印的最后一页的页码,如果忽略则打印完整的对象。参数Copies指定打印的份数,默认值为1。参数Preview为True,Excel将在打印对象之前调用打印预览,如果为False(默认值),则立即打印对象。参数ActivePrinter设置活动打印机的名称。如果设置参数PrintToFile为True,则打印到文件,此时如果没有指定参数PrToFileName,Excel将提示用户输入要使用的输出文件的文件名。参数Collate设置为True,逐份打印多份副本。参数IgnorePrintAreas设置为True,则忽略打印区域并打印整个对象。
[应用18]显示数据记录单(ShowDataForm方法)
使用ShowDataForm方法显示与指定工作表相关联的数据记录单,其语法为:

工作表对象.ShowDataForm

注意,宏执行到显示数据记录单语句时运行会暂停。关闭数据记录单后,宏将从ShowDataForm方法的下一语句开始继续执行。如果存在自定义数据记录单,则本方法将运行此记录单。
在Excel 2007的功能区中并没有显示记录单命令,该命令被隐藏,因此可以使用ShowDataForm方法调出记录单。
[应用19]获取工作表中已使用的区域(UsedRange属性)
使用工作表对象的UsedRange属性返回工作表中已使用的区域。该属性返回Range对象,代表当前已使用的单元格组成的矩形区域,是非常有用的属性。其语法为:

工作表对象.UsedRange

注意,有时虽然彻底清除了某单元格,但该属性仍返回包含该单元格的区域。
[应用20]在工作表中粘贴内容(PasteSpecial方法)
使用PasteSpecial方法以指定格式将剪贴板中的内容粘贴到工作表上。可使用本方法从其他应用程序中粘贴数据,或以特定格式粘贴数据。其语法为:

工作表对象.PasteSpecial(Format, Link, DisplayAsIcon, IconFileName, IconIndex, IconLabel, NoHTMLFormatting)

经常使用的语法为:

工作表对象.PasteSpecial(Format)

其中,参数Format指定要粘贴的数据格式的字符串。
例如,下面的代码将剪贴板中的Microsoft Word文档对象粘贴到工作表Sheet1上的单元格D1中:

Worksheets("Sheet1").Range("D1").Select
ActiveSheet.PasteSpecial Format:= _
"Microsoft Word 12.0 Document Object"

注意,在使用PastSpecial方法之前,必须选择目标区域。该方法可能会修改工作表的选定区域。
[应用21]计算工作表(Calculate方法)
可以使用Calculate方法计算指定的工作表、工作表中的单元格区域或者整个工作簿。例如,下面的代码计算工作簿中的第一张工作表:

Worksheets(1).Calculate

[应用22]重新计算工作表(EnableCalculation属性)
当EnableCalculation属性设置为True时,在必要情况下Excel自动重新计算工作表。否则,必须请求重新计算。
当该属性第一次被设置为True时,Excel将重新计算工作表。
[应用23]控制自动筛选下拉箭头(AutoFilterMode属性)
如果当前在工作表中显示自动筛选下拉箭头,则AutoFilterMode属性为True。我们可以将该属性设置为False,移除箭头。然而,不能将该属性设置为True。要显示自动筛选下拉箭头,使用AutoFilter方法。
[应用24]工作表是否处于筛选模式(FilterMode属性)
如果工作表处于筛选模式,则FilterMode属性为True。因此,如果显示了自动筛选下拉箭头但没有发生筛选,那么AutoFilterMode属性为True而FilterMode属性为False。一旦实际上执行了筛选,那么FilterMode属性就为True。FilterMode属性指明是否由于筛选而隐藏了行。
[应用25]转换名称(Evaluate方法)
使用工作表对象的Evaluate方法将名称转换为对象或值。
[应用26]设置工作表滚动区域(ScrollArea属性)
使用ScrollArea属性返回或者设置允许滚动的区域,用户不能选择滚动区域之外的区域。设置时,必须为A1样式的单元格引用。例如,下面的代码将单元格区域A1:C50设置为允许滚动区域,仅能够在单元格区域A1:C50范围内滚动或选择单元格:

Worksheets(1).ScrollArea = "A1:C50"

要移除单元格滚动或选择的限制,只须将该属性的值设置为空,例如:

Worksheets(1).ScrollArea = ""

注意,设置滚动区域与冻结窗格无关。
[应用27]为工作表设置背景(SetBackgroundPicture方法)
使用SetBackgroundPicture方法为工作表设置背景图片,其语法为:

工作表对象.SetBackgroundPicture(FileName)

其中,参数FileName为用于背景的图片路径和名称。例如,下面的代码为第一张工作表设置背景图片:

Worksheets(1).SetBackgroundPicture "c:\graphics\watermark.gif"

声明:本文由完美Excel网站整理,完美Excel保留本文的所有权利,未经许可,任何组织或个人不得以任何方式将本文用于商业作途。其他网站或博客引用本文,请注明原文链接和版权声明。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多