在VBA中,ThisWorkbook和ActiveWorkbook区别,ThisWorkbook值得是代码所在的工作簙,而ActiveWorkbook是目前程序代码运行到的激活的工作簙。例如我在用VBA编写两个Workbook操作时,出现的错误:
一、一开始进行操作时,声明了Application,当然第二个Workbook是在新建的Application中打开的,前面的操作都可以,如表格的选取等,但是到了利用Range方法时就出现“类range的copy方法无效”,这是应为两个Range在不同的Application里面,不知道是哪个Application执行的更快,如果是复制的Appliation快,则黏贴可以执行,如果是先黏贴就报错了。
我新建的Application删除后,然后再同一个Application里打开第二个Workbook出现的问题:
二、ThisWorkbook和ActiveWorkbook:如我从ThisWorkbook里通过对象调用各种方法然后执行到了Workbook2,然后再选取Workbook2的单元格进行复制,回到ThisWorkbook里进行黏贴。这时会出现两种情况第一种方法是直接的: rg3.Copy ThisWorkbook.Sheets(str1).Cells(m + 4, 1) 等价于下列三行代码 :
(1)rg3.Copy
(2) ThisWorkbook.Sheets("str").Activate
(3)ThisWorkbook.Sheet("str").Paste
按理说根本不需要第(2)句,但是不行。 我自己将其理解为假死状态,所谓的假死是需要接手后才能激活,而且激活也是要有等级的如:
rg3.Copy ThisWorkbook.Sheets(str1).Cells(m + 4, 1)这句中rg3是主,后面的是次,我不用管后面的死活,我只要知道它是个目的地就行,因为ThisWorkbook.Sheets....是可以找到的,所以这个方法可以成功。而第二种三行方法的代码第一句rg3是主,而第三句ThisWorkbook.对象是主,这就摆脱了假死状态。所以要对其进行激活,(重点)ThisWorkbook一直没有变化可以选值,但不可以调用方法,必须激活后才能。当执行到第一句时ActiveWorkbook是第二个表,若要成功执行第三句后ActiveWorkbook是第一个表。(重点激活)这是就牵扯到了我认为的激活等级问题。由于Workbook、Worksheet和Range都含有activate方法,如果要变主的是Range类,则激活应激活到Sheet,如果你只激活了Workbook是不行的,同样如果变主的是Sheet,则激活到Workbook就可以。而且激活的必须高于操作的。如用sheet就要激活WorkBook,如果激活Sheet也不行,即激活同等级不行。
三、如本案例仅仅只有两个Book,也可以不用上面的激活操作,直接将第二个表格Close掉即可
分享到:
相关推荐
VBA编程VBA编程VBA编程VBA编程VBA编程VBA编程VBA编程
Excel 2003高级VBA编程宝典是专门为在Excel...本书用大量的示例、代码阐述了VBA编程的概念,是学习在Excel 2003中用VBA进行编程的最直接和最有效的方法。通过本书的学习,能使读者迅速、轻松、高效地完成各种复杂工作。
这就一句话的事呀,两个工作簿都已经打开的情况下 及vba数据复制
Excel 2010高级 VBA编程宝典不仅介绍使用 Excel的新方法和开发新电子表格应用程序的步骤,还展示如何开发 VBA子例程和函数,以及如何使用高级编程技术等。针对从早期版本转向使用 Excel 2010的读者,《中文版Excel ...
Excel 2007与VBA编程从入门到精通Excel 2007与VBA编程从入门到精通Excel 2007与VBA编程从入门到精通Excel 2007与VBA编程从入门到精通Excel 2007与VBA编程从入门到精通Excel 2007与VBA编程从入门到精通Excel 2007与...
Excel_2003高级VBA编程宝典,比较全面的EXCEL vba编程技术。
全书共分8个部分,主要包括Excel 2003的基本背景、Excel应用程序开发、VBA编程、用户窗体和高级编程技巧等内容。本书用大量的示例、代码阐述了VBA编程的概念,是学习在 Excel 2003中用VBA进行编程的最直接和最有效的...
中文版Excel 2010高级VBA编程宝典(扫描版) ------------------------------------------------------------ 基本信息 原书名:Excel 2010 Power Programming with VBA 原出版社:Wiley 作者:John Walkenbach 译者:...
vba跨工作薄调用宏.doc
手册包含VBA编程中涉及的:对象、属性、方法、示例及相关的参考代码。 VbA_Office编程帮助手册(CHM版本).chm VBA_Excel编程帮助手册(CHM版本).chm VBA_Word编程帮助手册(CHM版本).chm VBA_PowerPoint编程帮助...
合并Excel文件 宏代码 合并工作表 宏代码
本章我们首先介绍数据库访问接口,然后介绍 Access支持的DAO和ADO两种数据库编程方法。 9.1 数据库引擎及其接口 VBA是通过Microsoft Jet数据库引擎工具来支持对数据库的 访问。所谓数据库引擎 实际上是一组动态链接...
中文版 excel 2010高级 vba编程宝典》不仅介绍使用 excel的新方法和开发新电子表格应用程序的步骤,还展示如何开发 vba子例程和函数,以及如何使用高级编程技术等。针对从早期版本转向使用 excel 2010的读者,《中文...
EXCELVBA编程从入门到精通.pdf
Excel 2010 VBA编程与实践的随书光盘。
EXCEL VBA学习工作中不可或缺的一本好书 本书是专门为在Excel 2003中使用VBA编程而编写的一部专著,本书是享有Mr.Spreadsheet美誉的国际知名作者John Walkenbach继《Excel 2003公式与函数应用宝典》、《中文版Excel...
以大量的示例,详细介绍了利用Excel VBA操作Excel进而操作Witldows的方法和技巧,包括管理Excel VBA常见对象(Alrolication对象、Workbook对象、Worksheet对象、Range对象、Chart对象、Shape对象、窗体控件对象以及...
《Excel VBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelVBA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和...