VBA编程,工作薄打开,两个工作薄之间表格复制,Range的copy方法

2 篇文章 0 订阅
       在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掉即可
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值