VBA编程,⼯作薄打开,两个⼯作薄之间表格复制,Range的
copy⽅法
在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").Pastevba编程技巧
按理说根本不需要第(2)句,但是不⾏。 我⾃⼰将其理解为假死状态,所谓的假死是需要接⼿后才能激活,⽽且激活也是要有等级的如:
rg3.Copy ThisWorkbook.Sheets(str1).Cells(m + 4, 1)这句中rg3是主,后⾯的是次,我不⽤管后⾯的死活,我只要知道它是个⽬的地就⾏,因为是可以到的,所以这个⽅法可以成功。⽽第⼆种三⾏⽅法的代码第⼀句rg3是主,⽽第三句ThisWorkbook.对象是主,这就摆脱了假死状态。所以要对其进⾏激活,(重点)ThisWorkbook⼀直没有变化可以选值,但不可以调⽤⽅法,必须激活后才能。当执⾏到第⼀句时ActiveWorkbook是第⼆个表,若要成功执⾏第三句后ActiveWorkbook是第⼀个表。(重点激活)这是就牵扯到了我认为的激活等级问题。由于Workbook、Worksheet和Range都含有activate⽅法,如果要变主的是Range类,则激活应激活到Sheet,如果你只激活了Workbook是不⾏的,同样如果变主的是Sheet,则激活到Workbook就可以。⽽且激活的必须⾼于操作的。如⽤sheet就要激活WorkBook,如果激活Sheet也不⾏,即激活同等级不⾏。
三、如本案例仅仅只有两个Book,也可以不⽤上⾯的激活操作,直接将第⼆个表格Close掉即可

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。