当前位置: 首页 > 编程日记 > 正文

VBA中级班课时3小结

本课内容:工作簿和工作表对象

主讲:rover18

学习时间:2010年11月

本节课将学习工作簿对象Workbooks、Workbook与工作表对象Worksheets、Worksheet。在我们了解了VBA的四大要素——对象、属性、方法和事件后,会发现VBA的程序是对对象的一系列操作与控制:如果将对象看作一个名词,那么属性是描述该名词的形容词,方法是为名词赋予动作的动词,事件是某一动作后引发的变动。一切都围绕着对象展开。那么在VBA中有哪些对象?对象之间的关系如何?每个对象有哪些属性、方法与事件?这些对象的关系结构我们称之为对象模型。

对象模型:               EXCEL中所有集合、对象的层次分布结构

集合(collection): 由一组对象组成的对象集,比如Workbooks是当前所有打开的Workbook对象的集合,Worksheets是指定的或活动工作簿中所有Worksheet对象的集合。


注:对象模型树型结构图在2003版的帮助中可以查到,但在2007版和2010版帮助中,微软取消了结构图,增加了集合与对象的成员构成。

一、工作簿

(一)、工作簿表示方法

1、 索引号表示法Workbooks(Index)

按工作簿打开的次序为其编号,并按指定的号码引用工作簿:Workbooks(1)

2、 名称表示法Workbooks(“工作表名”)

Workbooks(“工作表名.xls”) ‘已保存过的工作表

Workbooks(“工作表名”) ‘未保存的工作表


注:需要注意的是,已保存的工作簿也可以不加后缀名引用,但如果系统设置里打开了“已知文件类型的扩展名“就会出错。所以保险起见最好还是写上扩展名。

3、 两种表示方法的限制条件

经测试发现,无论是索引号引用,还是文件名引用,只适用于工程资源管理器中显示的工作簿,当通过Excel快捷键 打开的未保存工作簿,并不在一个工程资源管理器中,所以不适用,会出现“下标越界”的错误提示。

(二)、新建、打开、激活、保存、关闭工作簿

1、 新建工作簿Workbooks.Add方法

Workbooks.Add(Template)

参数Template可选,确定如何创建新工作簿。如果省略此参数,将创建包含3个空白工作表的新工作簿。

Template 值 说明:

参数

说明

xlWBATChart-4109新建一个名为Chart只有一个图表的工作簿
xlWBATWorksheet-4167新建一个名为Sheet1只有一个工作表的工作簿


  Application.SheetsInNewWorkbook属性设置

在Excel中,可以通过工具中的选项对新建工作簿的默认工作表数进行设置,它对应的VBA代码是SheetsInNewWorkbook属性。改变新建工作簿的工作表数目的代码是:

Application.SheetsInNewWorkbook = 1‘新建的工作簿中只有1个工作表


注:这个设置改变了选项中的默认工作表数,所以最后要记得还原。

2、 打开工作簿Workbooks.open方法

Workbooks.Open(FileName, Password, WriteResPassword)

参数FileName必选,Password和 WriteResPassword可选。

参数数据类型说明
FileNameVariant要打开的工作簿的文件名。可包含文件路径
PasswordVariant一个字符串,包含打开受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。
WriteResPasswordVariant一个字符串,包含写入受保护工作簿所需的密码。如果省略此参数并且工作簿已设置密码,则提示用户输入密码。

示例:

Workbooks.Open("C:\Desktop\练习题.xls")

Open方法还有许多其它参数,列出的是常用参数。

3、 激活工作簿Workbook.Activate方法

使用Workbook对象的Activate方法可以使已打开的工作簿成为当前活动工作簿。示例:

Workbooks("练习题.xls").Activate

4、 保存工作簿


保存对指定工作簿所做的更改: Workbook.Save方法

Workbooks(“练习题.xls”).Save

AciveWorkbook.Save


不保存对指定工作簿所做的更改: Workbook.Saved属性

将工作簿的 Saved 属性设置为 True,表示工作簿从上次保存至今未发生过更改,可在不保存工作簿所做的修改的情况下关闭工作簿。

Workbooks(“练习题.xls”).Saved = True

首次保存工作簿时,用 Workbook.SaveAs 方法

Workbook.SaveAs(FileName, FileFormat, Password, WriteResPassword,)

参数Filename必选,其它参数可选。

名称数据类型说明
FilenameVariant一个表示要保存文件的文件名的字符串。可包含完整路径,如果不指定路径,文件将保存到当前文件夹中。
FileFormatVariant保存文件时使用的文件格式。对于现有文件,默认采用上一次指定的文件格式;对于新文件,默认采用当前所用 Exce版本的格式。
PasswordVariant它是一个区分大小写的字符串(最长不超过 15 个字符),用于指定文件的保护密码。


   注:文件名要写出后缀名,否则默认采用当前版本的格式,如果使用2007以上版本,可使用*.xls确保保存为2003版文件。

Activeworkbook.SaveAs Filename:= "C:\作业题.xls" ‘对新建文件保存

workbooks("练习题.xlsx").SaveAs filename:="C:\作业题.xls" ‘对已存在文件另存


注:对已存在文件采用向下兼容另存为,即如果原文件为2007以上版本,可保存为2003版本,但反过来,2003版本文件无法通过“SaveAs“方法另存为2007以上版本文件。

5、 关闭工作簿Workbook.Close方法

Workbook.Close(SaveChanges, Filename)

所有参数均为可选

名称数据类型说明
SaveChangesVariant如果工作簿中没有改动,则忽略此参数。如果工作簿中有改动,此参数为 True,则保存对工作簿所做的更改。如果工作簿尚未命名,则使用 FileName参数。如果省略 Filename参数,则要求用户提供文件名。
FilenameVariant以此文件名保存所做的更改。

示例:

activeworkbook.Close savechanges:=true,filename:="C:\习题.xls"      ‘保存对新建工作簿的修改并关闭

Workbooks(“习题.xls“).close false ‘不保存修改并关闭,可省略Savechanges

(三)、其它常用属性

1、 Workbooks.Name属性(名称)

返回一个 String 值,它代表对象的名称。通过Name属性我们可以对工作簿进行重命名。

2、 Workbooks.path属性(保存路径)

返回一个 String 值,它代表应用程序的完整路径,不包括末尾的分隔符和文件名。

3、 Workbooks.fullname属性(完整路径)

返回对象的名称(以字符串表示),包括其磁盘路径。String 型。它是工作簿的Path属性与Name属性的完整结果。

FullName=Path &“\”& Name

4、 Workbook.IsAddin 属性

如果指定工作簿作为加载宏运行,则该属性值为 True。Boolean 类型。如果将该属性设置为 True,则指定工作簿将具有下列特征:


如果打开该工作簿时发生了更改,将不提示保存该工作簿。
工作簿窗口不可见。
该工作簿中的任何宏都不在“宏”对话框中显示(指向“工具”菜单中的“宏”项,并单击“宏”命令可显示该对话框)。
尽管该工作簿中的宏在“宏”对话框中不可见,仍然可以通过“宏”对话框运行该工作簿中的宏。另外,宏名无须使用工作簿名称进行标识。
在打开工作簿时按住 Shift 键不起作用。

二、工作表

(一)、 Sheets集合与Worksheets集合的区别

Sheets集合                      代表当前工作簿中的所有工作表,包括图表工作表Chart、工作表Worksheet以及宏表。

Worksheets集合            仅代表当前工作簿中的所有工作表Worksheet。

Charts集合                      指定的或活动工作簿中所有图表工作表Chart的集合

(二)、工作表表示方法

1、 索引号表示法Worksheets/Sheets(Index)

该工作表在工作簿中的位置(索引号)。索引号自工作表标签最左边向右依次计数,第一个工作表通常用Worksheets(1)表示,最后一个工作表通常用Worksheets(WorkSheets.count)表示。如果要引用工作簿中包含图表与工作表在内的所有工作表,要使用Sheets对象集合。

2、 表名表示法Worksheets/Sheets (“工作表名”)


注:工作表名使用字符串形式,如Worksheets(“Sheet1”)

3、 代码名表示法Worksheet.codename属性

除以上两种常用表示工作表方式外,还有一种不常用,但很实用的方法:Codename属性。

Codename是在创建工作表时自动分配给该工作表的名称,大家可以在工程资源管理器中看到Sheet1(Sheet1),括号里是Name属性,括号外的是CodeName属性。它可以在属性窗口第一行(名称)项进行修改。无论是对工作表排序,还是重命名工作表,其CodeName属性都不会改变(除非删除该工作表,或者是在VBE窗口中对(名称)项重命名)。

Sheet3.Name ‘返回Sheet3表的表名

tt

请看上图,绿色区域是Name属性,是工作表名;黄色区域是CodeName属性。注意看立即窗口中的结果,3种方式得到3个不同结果。

(三)、新建、删除、复制、移动、选择工作表

1、 新建工作表Worksheets.Add方法

新建工作表、图表或宏表。新建的工作表将成为活动工作表。Worksheets.Add(Before, After, Count, Type),参数均为可选

名称数据类型说明
BeforeVariant指定工作表的对象,新建的工作表将置于此工作表之前
AfterVariant指定工作表的对象,新建的工作表将置于此工作表之后
CountVariant要添加的工作表数。默认值为 1
TypeVariant指定工作表类型,可以为下列 XlSheetType常量之一:xlWorksheet、xlChart、xlExcel4MacroSheet 或 xlExcel4IntlMacroSheet。如果基于现有模板插入工作表,则指定该模板的路径。默认值为 xlWorksheet


注:新建工作表默认插入在活动工作表前。
注:可在Add方法后跟Name属性为新建工作表命名

worksheets.Add.name="excelhome" ‘新建同时为工作表命名

2、 删除工作表Worksheets.delete方法

3、 复制工作表Worksheets.copy方法

Microsoft Excel将工作表复制到工作簿的另一位置并自动为其命名为:原表名(2)。Copy方法带有2个可选的参数,即参数Before和参数After,在使用时两个参数只参选一。

名称数据类型说明
BeforeVariant将要在其之前放置所复制工作表的工作表。如果指定了 After,则不能指定 Before。
AfterVariant将要在其之后放置所复制工作表的工作表。如果指定了 Before,则不能指定 After。


     注:如果既不指定 Before 也不指定 After,则 Microsoft Exce将新建一个工作簿,其中包含复制的工作表。

Worksheets("sheet2").Copy After:=Worksheets(sheets.count)‘复制Sheet2表到最后

4、 移动工作表Worksheets.Move方法

Move方法与Copy方法的参数相同,作用也一样,用法可参照Copy方法。

5、 激活、选择工作表


激活工作表Worksheet.Activate方法

Worksheets("sheet2").Activate ‘ 激活当前工作簿中的工作表sheet2


选择工作表Worksheet.Select方法

Worksheets("sheet2").Select ‘ 选择当前工作簿中的工作表sheet2


Active与Select方法区别

‘以下示例同时选择工作簿中的工作表sheet2、sheet3和sheet5

‘方法1:

Worksheets(Array("sheet2", "sheet3","sheet5")).Select ‘用Array参数

‘方法2

Worksheets(“sheet2”).Select

Worksheets(“sheet3”).Select Replace:=False ‘用Replace参数

Worksheets(“sheet5”).Select False ‘可以省略Replace

当工作表隐藏后,Select方法将会出现错误,而使用Activate则会正常运行;Activate方法只能激活一个工作表,而Select方法可以同时选择多个工作表。


注:如果Replace值为True,则此语句前选中的工作表将被取消选中。

三、 Application.DisplayAlerts属性

禁止显示警告和消息框,默认值为 True。将此属性设置为 False 可在宏运行时禁止显示提示和警告消息;当出现需要用户应答的消息时,Microsoft Exce将选择默认应答。

1、 自动覆盖保存现存工作簿

如果使用工作簿的 SaveAs 方法覆盖现有文件,则“确认另存为”对话框具有的默认响应为“否”;如果将 DisplayAlerts 属性设置为 False,则 Exce选择的响应为“是”。如果选择的响应为“是”,则将覆盖现有文件。

2、 不保存修改直接关闭工作簿

如果使用工作簿的Close方法关闭现有文件,若修改文件后未保存,且DisplayAlerts 属性设置为 False,则“确认保存关闭“对话框的默认响应为”否“,即不保存对工作簿所做的更改就关闭。

示例:

Sub test()

Application.DisplayAlerts = False

Cells(3, 2) = "It's a test"

Workbooks("练习题.xls").Saveas filename:=”练习题.xls” ‘自动覆盖文件保存

Cells(3, 2).Clear

Workbooks("练习题.xls ").Close ‘不保存修改,直接关闭

Application.DisplayAlerts = True

End Sub

3、 删除工作表不跳出警告框

用Delete方法删除工作表会引起Excel跳出警告对话框

为避免这种情况,我们可使用Application.DisplayAlerts=False来屏蔽弹出的警告框,此时对话框的默认响应为”删除“。

四、小结

本节课对Excel的工作簿和工作表对象做了简单介绍,对工作簿、工作表的表示方式、建立、保存、删除、关闭等方法与属性列举了简单示例。其实Workbook对象与Worksheet对象的成员中还有很多方法、属性以及事件,未能在本课中得到介绍,而工作簿和工作表对象是又我们在工作中会常用到的对象,所以在实际应用中要多使用微软自带的VBA帮助,还有不要忘记通过录制宏来学习。

ExceHome技术论坛

Excehome免费在线培训中心

相关文章:

解决firefox ubuntu无法打开页面的问题

firefox备份用户配置信息 https://support.mozilla.org/zh-CN/kb/%E5%A4%87%E4%BB%BD%E4%BD%A0%E7%9A%84%E4%BF%A1%E6%81%AF 把xxxxxxxx.default 覆盖掉xxxxxxxx.default-release里面的内容

js构造函数式编程

1.函数式编程 //创建和初始化地图函数:function initMap(){createMap();//创建地图setMapEvent();//设置地图事件addMapControl();//向地图添加控件}//创建地图函数:function createMap(){var map new BMap.Map("dituContent");//在百度地图容…

【ACM】绝地求生

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1009 【问题描述】 zbt最近喜欢上了《绝地求生》(pubg)游戏,pubg这个游戏有一种跑毒机制,每次会产生一个圆形的安全区,玩家需要从他的当前位置在一定时间内进入安…

【oracle】dblink创建

目的:oracle中跨数据库查询 两台数据库服务器db_A(本地)和db_B(远程192.168.1.100),db_A下用户user_a 需要访问到db_B下user_b的数据解决:查询得知使用dblink(即database link 数据库链)实现过程:1、确定用户user_a有没有创建 db…

ASan(Linux),gcc4.8以上版本自带的内存检查工具

转自:http://shafeng.github.io/2017/05/10/asan/ 最近线上的程序总是莫名其妙崩溃,因为我们的项目使用了分布负载的机制,对于玩家的影响其实很小,但是我肯定是忍不了的…程序崩溃的core文件里面完全找不到问题所在,初步分析应该是野指针导致,仔细分析程序之后并没有…

详解使用DockerHub官方的mysql镜像生成容器

为什么80%的码农都做不了架构师?>>> 写在前面:看到网上关于利用DockerHub官方的mysql镜像生成容器此类的文档比较少,故结合自身实践分享给大家,还望多多指教。 我的需求:利用docker 镜像快速建立一个mysql…

【ACM】奇怪的回文数

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1008 【问题描述】 “回文”是指正读反读都能读通的句子,它是古今中外都有的一种修辞方式和文字游戏,如“我为人人,人人为我”等。 在数学中也有这样一类数字有这样的特征…

java I/O之装饰者模式

装饰者: Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 装饰者模式意图: 动态的给一个对象添加额外的职责。Decorator比生产子类灵…

ubuntu下wireshark添加root权限

wireshark要监控eth0,但是必须要root权限才行。但是,直接用root运行程序是相当危险,也是非常不方便的。 解决方法如下: 1.添加wireshark用户组sudo groupadd wireshark 2.将dumpcap更改为wireshark用户组sudo chgrp wireshark /…

Oracle导出空表解决办法

在oracle 11g 中,发现传统的exp不能导出空的表 oracle 11g 新增了一个参数:deferred_segment_creation,含义是段延迟创建,默认是true。具体是什么意思呢? 如果这个参数设置为true,你新建了一个表T1&#xf…

【ACM】图像分类

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1003 【问题描述】 现在, 我们需要你来解决一项图像分类任务。 首先我们需要介绍下简单图像的数据存储形式,你可以粗略的认为图像在数字意义就是一个二维矩阵(我们这里不考虑…

【译】如何精确判断最终用户响应时间过长的原因?

译者:原始文章有点性能测试工具软文的感觉,毕竟文章来源于某工具官方博客。高手请略过。 对于我这种新手,此文还是给我带来一些惊喜,从上到下地,从表象到根源地,定位他们遇到性能问题-响应时间过长-的根本原…

javascript中重要概念-闭包-深入理解

在上次的分享中javascript--函数参数与闭包--详解,对闭包的解释不够深入。本人经过一段时间的学习,对闭包的概念又有了新的理解。于是便把学习的过程整理成文章,一是为了加深自己闭包的理解,二是给读者提供学习的途径,…

ssl握手过程和ca证书验证

转载:https://www.cnblogs.com/cposture/p/9029014.html SSL 认证 可以将 SSL 服务器与客户端之间的通信配置为使用单向或双向 SSL 认证。 单向 SSL 认证一般是客户端利用服务器传过来的信息验证服务器的合法性,服务器的合法性包括:证书是…

【ACM】练武奇才

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1005 【问题描述】 很久很久以前,constbh大神还在上着小学。一天,在放学的路上,他被一位乞丐叫住,这位乞丐对constbh说,我看你骨骼惊奇,…

Bat命令学习

参考资料:http://www.cnblogs.com/SunShineYPH/archive/2011/12/13/2285570.html

记一次CentOS7内核kernel的删除重装

人生在于折腾,学习Linux更要多多折腾。在一次折腾中吸取教训,更易于记忆。今天我们来折腾Linux的内核:删除系统内核后,通过光盘进行kernel的重安装。友情提示:请在虚拟机环境进行,折腾前务必做好系统快照。…

tcpdump抓包并保存到远程服务器

有的时候,运行tcpdump抓包进程的主机A可能没有足够的硬盘空间。例如我们使用树霉派搭建了一个热点,然后我们想在树霉派上抓包,因为树霉派的存储很小,所以很容易在短时间内将存储空间使用完。 为了解决该问题,我们可以…

【ACM】家喻户晓的中药店(待更)

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/43/1007 【问题描述】 long_xiao和const_hhh是一对恩爱的夫妻。 他们在京城经营着一家中药店,夫妻二人医术精湛、古道热肠,虽然年过花甲,身体依然硬朗。更重要的是&#xff…

常用MySQL的命令集锦

常用MySQL的命令集锦 一、连接MySQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码…

google的gn构建系统

什么是GN? GN是一个生成Ninja构建文件的元构建系统,以便你可以用Ninja构建Chromium。 你为什么从GYP切换? 我们相信GN文件比GYP文件更具可读性和可维护性。GN很快: GN比GYP快20倍。GN支持作为构建的一部分,根据Ninj…

【ACM】五子棋

题目链接:http://acm.nuc.edu.cn/OJ/contest/show/25/1009 【问题描述】 五子棋想必大家都玩过,如果没有那我只能重新介绍一下规则了,当横竖斜(共八个方向)出现5个同色棋子时,则认为该颜色棋的选手获胜。…

源码编译安装httpd及其常见错误

一、编译安装的整体步骤 1、在官网下载源码,并解压2、切换到其目录中 3、执行./configure4、编译 二、编译中及安装后配置常见的参数及其说明编译中配置1)指定安装路径--prefix/usr/local/Pacakage_name 指定安装路径--sysconfigdir/etc/Package_name …

Nhibernate3循序渐进(三): 一对多映射和级联保存

我们知道, 对于数据库中的一对多关系, 我们在建表的时候, 应该在多表这里建立外键我们准备这样一个场景, 大学里的系和学生, 一个系有多个学生Department类和Xml如下:Department.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;namespa…

自定义UISearchBar外观

本文转载至 http://www.jianshu.com/p/66b5b777f5dc 最近,在项目过程中遇到要自定义SearchBar的外观,虽然自己觉得用系统默认的外观就行了,不过UI设计师要求不用系统的默认样式,要跟app主题保持 一致。 图1:设计效果图…

linux内存管理和原理分析

https://blog.csdn.net/rebirthme/article/details/50402082

【数据结构】邻接矩阵及其实现

文件操作比直接输入方便很多 直接输入&#xff1a; //建立图的邻接矩阵储存结构 #include <stdio.h> #include <string.h> #define M 20 #define FINITY 5000 typedef struct {char vexs[M];int edge[M][M];int n,e; }Mgraph;//c0&#xff0c;表示建立无向图 …

对职业生涯的思考

从刚毕业到目前所在公司&#xff0c;差不多6年了&#xff0c;想想这六年里面&#xff0c;自己的能力和刚毕业比有了很大的提升&#xff0c;但是现在在什么能力上&#xff0c;我不知道&#xff0c;毕竟没有去过别的公司。最近也在思考自己未来&#xff0c;算是比较迷茫阶段。趁最…

jquery源码分析(七)——事件模块 event(二)

上一章节探讨了事件的一些概念&#xff0c;接下来看下jQuery的事件模块。 jQuery对事件的绑定分别有几个API&#xff1a;.bind()/.live()/.delegate()/.on()/click()&#xff0c; 不管是用什么方式绑定&#xff0c;归根到底还是用addEventListener/attachEvent&#xff08;IE&a…

google gn构建系统的介绍

GN语言和操作 GN语言和操作 内容介绍 使用内置的帮助设计理念语言 字符串清单条件语句循环函数调用作用域和执行Scoping and execution命名事物 文件和目录名称构建配置目标CONFIGS 公共配置模板其他特性 Imports路径处理模式执行脚本与Blaze的区别和相似之处 介绍 本页面描述…