7 Worksheet 对象
7.1 设置阶段
代码清单7.1:使用Parent属性获得一个对象的父对象的指针
'使用Parent属性获得一个对象的父对象的指针
Sub MeetMySingleParent()
'Declare a worksheet variable named ws
Dim ws As Worksheet 'set ws to refer to sheet 1
Set ws = ThisWorkbook.Worksheets("Sheet1") 'please meet my parent - Mrs. Workbook
Debug.Print ws.Parent.Name Set ws = Nothing
End Sub
以编程方式区分出代码名称和实际名称
'prints out name & code name
'assumes a worksheet has been named
'in the vbe as: wsMenu Dim wsMenu As Worksheet ' = ThisWorkbook.Worksheets(1)
Sub WhatsMyName()
On Error Resume Next Debug.Print "The name on my worksheet tab is " & wsMenu.Name & ", " & vbCrLf
Debug.Print "But you can call me " & wsMenu.CodeName
End Sub
7.2 在使用工作表之前确认它们
代码清单7.2:确认一个工作表名称在使用其之前已存在
'代码清单7.2:确认一个工作表名称在使用其之前已存在
Function WorksheetExists(wb As Workbook, sName As String) As Boolean
Dim s As String
On Error GoTo bWorksheetExistsErr
s = wb.Worksheets(sName).Name
WorksheetExists = True
Exit Function
bWorksheetExistsErr:
WorksheetExists = False
End Function
代码清单7.3:使用函数检查代码名称的存在性
'determines if a given worksheet name exists in a workbook
'checks by looking for the code name rather than the name
Function WorksheetCodenameExists(wb As Workbook, sCodename As String) As Boolean
Dim s As String
Dim ws As Worksheet WorksheetCodenameExists = False
For Each ws In wb.Worksheets
If StrComp(ws.CodeName, sCodename, vbTextCompare) = Then
WorksheetCodenameExists = True
Exit For
End If
Next
Set ws = Nothing
End Function
7.3 隐藏与取消隐藏
代码清单7.4:隐藏和取消隐藏工作表
'代码清单7.4: 隐藏和取消隐藏工作表
'/Hides the worksheet named sName
Sub HideWorksheet(sName As String, bVeryHidden As Boolean)
If WorksheetExists(ThisWorkbook, sName) Then
If bVeryHidden Then
ThisWorkbook.Worksheets(sName).Visible = xlSheetVeryHidden
Else
ThisWorkbook.Worksheets(sName).Visible = xlSheetHidden
End If
End If
End Sub Sub UnhideWorksheet(sName As String)
If WorksheetExists(ThisWorkbook, sName) Then
ThisWorkbook.Worksheets(sName).Visible = xlSheetVisible
End If
End Sub Sub UsingHideUnhide()
Dim lResponse As Long 'Hide the worksheet
HideWorksheet "Sheet2", True 'Show that it is hidden - ask to unhide
lResponse = MsgBox("the worksheet is very hidden. unhide?", vbYesNo) If lResponse = vbYes Then
UnhideWorksheet "Sheet2"
End If
End Sub
代码清单7.5:取消隐藏工作薄中的每一个工作表
'代码清单7.5: 取消隐藏工作薄中的每一个工作表
'Unhides all worksheets in the workbook, even very hidden worksheets
Sub UnhideAllWorksheets()
Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets
ws.Visible = xlSheetVisible
Next ws Set ws = Nothing
End Sub
7.4 锁住关键内容
代码清单7.6:利用Protect方法保护工作表
'代码清单7.6: 利用Protect方法保护工作表
Function ProtectWorksheet(ws As Worksheet, sPassword As String) As Boolean
On Error GoTo ErrHandler
If Not ws.ProtectContents Then
ws.Protect sPassword, True, True, True
End If ProtectWorksheet = True
Exit Function
ErrHandler:
ProtectWorksheet = False
End Function
代码清单7.7:利用Unprotect方法解除工作表保护
'代码清单7.7: 利用Unprotect方法解除工作表保护
Function UnprotectWorksheet(ws As Worksheet, sPassword As String) As Boolean
On Error GoTo ErrHandler
If ws.ProtectContents Then
ws.Unprotect sPassword
End If
UnprotectWorksheet = True
Exit Function
ErrHandler:
UnprotectWorksheet = False
End Function Sub TestProtection()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets() 'example of how you might use protectworksheet
If Not ProtectWorksheet(ws, "TestPassword") Then
Debug.Print "the worksheet could not be protected."
Else
Debug.Print "the worksheet has been protected."
End If 'example of how you might use unprotect worksheet
If UnprotectWorksheet(ws, "testpassword") Then
'unprotected - safe to modify the worksheet
'contents pogrammatically now...
Debug.Print "the worksheet has been unprotected."
Else
Debug.Print "the worksheet could not be unprotected."
End If Set ws = Nothing
End Sub
7.5 管理工作薄工作表
7.5.1 增加和删除工作表
增加工作表的语法:
ThisWorkbook.Worksheets.Add [Before|After],[Count],[Type]
VBA调用方法或函数除了按位置设置实参,还可以按名称设置实参,当指定参数名称时,不需要按照顺序放置参数。
'通过名称指定参数
ThisWorkbook.Worksheets.Add Count:=, Before:= ThisWorkbook.Worksheets()
'通过顺序指定参数
ThisWorkbook.Worksheets.Add ThisWorkbook.Worksheets(), ,
删除工作表的实例:
Sub TestDelete()
'删除工作薄的第一个工作表
ThisWorkbook.Worksheets().Delete
End Sub
上面代码执行,可能会弹出删除工作表的确认对话框。可以通过Application对象的DisplayAlerts属性关闭这个功能。
代码清单7.8:使用DeleteSheet函数安全删除工作表
'Deletes the worksheet given in the ws parameter
'if bQuiet then do not display Excel alerts
Function DeleteSheet(ws As Worksheet, bQuiet As Boolean) As Boolean
Dim bDeleted As Boolean On Error GoTo ErrHandler bDeleted = False If CountVisibleSheets(ws.Parent) > Then
'ok to delete - display alerts?
If bQuiet Then Application.DisplayAlerts = False 'finally! delete the darn thing
bDeleted = ws.Parent.Worksheets(ws.Name).Delete
Else
'forget it -
'need at least one visible sheet in a workbook,
'bDeleted is already false
End If ExitPoint:
'make sure display alerts is always on
Application.DisplayAlerts = True
DeleteSheet = bDeleted
Exit Function ErrHandler:
bDeleted = False
Resume ExitPoint
End Function 'returns a count of all of the visible sheets in the workbook wb
Function CountVisibleSheets(wb As Workbook) As Integer
Dim nSheetIndex As Integer
Dim nCount As Integer
nCount =
For nSheetIndex = To wb.Sheets.Count
If wb.Sheets(nSheetIndex).Visible = xlSheetVisible Then
nCount = nCount +
End If
Next
CountVisibleSheets = nCount
End Function
7.5.2 移动和复制工作表
移动和复制工作表的语法:
worksheet.Move [Before|After]
worksheet.Copy [Before|After]
Before|After是Worksheet对象,如果没有指定,则worksheet被放置到一个新建的工作薄中。
Sub SimpleWorksheetMovement()
'复制第3个工作表到新建的工作薄
ThisWorkbook.Worksheets().Copy
'复制第3个工作表到第2个工作表之前
ThisWorkbook.Worksheets().Copy ThisWorkbook.Worksheets()
'移动第2个工作表到工作薄的末尾
ThisWorkbook.Worksheets().Move _
After := ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub
代码清单7.9:在工作薄中按字母顺序排序工作表
'代码清单7.9: 在工作薄中按字母顺序排序工作表
'performs a simple bubble sort to
'sort the worksheets in the workbook
Sub AlphabetizeWorksheets(wb As Workbook)
Dim bSorted As Boolean
Dim nSheetsSorted As Integer
Dim nSheets As Integer
Dim n As Integer nSheets = wb.Worksheets.Count
nSheetsSorted = Do While (nSheetsSorted < nSheets) And Not bSorted
bSorted = True
nSheetsSorted = nSheetsSorted +
For n = To nSheets - nSheetsSorted
If StrComp(wb.Worksheets(n).Name, wb.Worksheets(n + ).Name, vbTextCompare) > Then
'out of order - swap the sheets
wb.Worksheets(n + ).Move beforfore:=wb.Worksheets(n)
bSorted = False
End If
Next
Loop
End Sub
7.6 说明工作表事件
在选择响应的事件之前,确认在工程浏览器中选择了适当的工作表
代码清单7.10:使用Change事件响应工作表改变
Private Sub Worksheet_Change(ByVal Target As Range)
Select Case Target.Address
Case "$B$1"
ChangeColumnWidth Target.Value
Case "$B$2"
ChangeRowHeight Target.Value
End Select
End Sub Sub ChangeColumnWidth(Width As Variant)
If IsNumeric(Width) Then
If < Width And Width < Then
Me.Columns.ColumnWidth = Width
ElseIf Width = Then
Me.Columns.ColumnWidth = Me.StandardWidth
End If
End If
End Sub Sub ChangeRowHeight(Height As Variant)
If IsNumeric(Height) Then
If < Height And Height < Then
Me.Rows.RowHeight = Height
ElseIf Height = Then
Me.Rows.RowHeight = Me.StandardHeight
End If
End If
End Sub
注意,清单中的Me代表Worksheet。
7 Worksheet 对象的更多相关文章
- 【VBA编程】15.WorkSheet对象常用属性
[Cells属性] Cells属性用于返回一个Range对象,表示工作表中所有的单元格,包括已经使用的单元格和未使用的单元格. [代码区域] Sub 使用Cells属性() '声明变量 Dim wk ...
- 电子表格控件Spreadsheet 对象方法事件详细介绍
1.ActiveCell:返回代表活动单元格的Range只读对象.2.ActiveSheet:返回代表活动工作表的WorkSheet只读对象.3.ActiveWindow:返回表示当前窗口的Windo ...
- Workbook对象的方法总结(二)
(1).Worksheet 对象有 row_dimensions 和 column_dimensions 属性,控制行高和列宽. 例如: >>> sheet.row_dimensio ...
- Excel VBA入门(五)Excel对象操作
本章是本系列教程的重点.但我觉得应该不是难点.从第零章开始到学完本章,应该可以把VBA用于实战中了. Excel对象主要有4个: 工作薄 Workbook 工作表 Worksheet 单元格区域 Ra ...
- Excel Application对象应用
Application对象是Excel对象模型中最高层级的对象,代表Excel应用程序自身,也包含组成工作簿的许多部分,包括工作簿.工作表.单元格集合以及它们包含的数据. Application对象包 ...
- Excel开发学习笔记:查找与创建worksheet
开发环境基于VSTO,具体配置:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序. 如题,我在ThisWorkbook.vb中添加了一个public函数来 ...
- 8 Range 对象
8.1 引用Range 引用Range的主要方法: Application.ActiveCell Application.Range Application.Selection Worksheet.C ...
- Python 操作 MS Excel 文件
利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...
- VBA常用代码解析
031 删除工作表中的空行 如果需要删除工作表中所有的空行,可以使用下面的代码. Sub DelBlankRow() DimrRow As Long DimLRow As Long Dimi As L ...
随机推荐
- mycat——未完成
https://www.cnblogs.com/joylee/p/7513038.html https://blog.csdn.net/wrs120/article/details/80417345 ...
- drupal8 用户指南
一句话概括 - 官方文档 概念- Drupal是个内容管理系统哦 那么,什么是内容管理系统? 就是用户自己编辑自己的网站内容的一个系统. 那么,什么是Drupal呢? Drupal是一个通过模块和主题 ...
- layuiAdmin 项目修改
layuiAdmin修改 index.js 修改登录url user/login=>publics/login config.js 修改 name 项目名称, tokenName token字段 ...
- Happy Three Friends
Happy Three Friends Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- node框架express里面静态文件中间件express.static,根据路径名查找文件
- 是express框架下的一个方法,可以根据请求路径名查找某个文件下文件名字和路径名相同的文件 - 3.X里面有20多个中间件,但是在4.X里面 只保留了express.static - 语法 ex ...
- 选学霸(codevs 3372)
题目描述 Description 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一部分没有,同学们就会抗议.所以老师想请你帮他求出他该选多少学霸,才能既不让同 ...
- [NOIP2004] 提高组 洛谷P1089 津津的储蓄计划
题目描述 津津的零花钱一直都是自己管理.每个月的月初妈妈给津津300元钱,津津会预算这个月的花销,并且总能做到实际花销和预算的相同. 为了让津津学习如何储蓄,妈妈提出,津津可以随时把整百的钱存在她那里 ...
- 【Codevs1237&网络流24题餐巾计划】(费用流)
题意:一个餐厅在相继的 N 天里,每天需用的餐巾数不尽相同. 假设第 i 天需要 ri块餐巾(i=1,2,…,N).餐厅可以购买新的餐巾,每块餐巾的费用为 p 分: 或者把旧餐巾送到快洗部,洗一块需 ...
- 洛谷 U41571 Agent2
U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...
- Jmeter执行java脚本结束时提示:The JVM should have exited but did not.
使用jmeter对dubbo进行压测时,需要使用jmeter的sampler里的java请求 使用./jmeter.sh -n -t test.jmx -l test.jmx -o -e test后台 ...