在VBA中,ThisWorkbook和ActiveWorkbook區(qū)別,ThisWorkbook值得是代碼所在的工作簙,而ActiveWorkbook是目前程序代碼運行到的激活的工作簙。例如我在用VBA編寫兩個Workbook操作時,出現(xiàn)的錯誤: 二、ThisWorkbook和ActiveWorkbook:如我從ThisWorkbook里通過對象調(diào)用各種方法然后執(zhí)行到了Workbook2,然后再選取Workbook2的單元格進行復(fù)制,回到ThisWorkbook里進行黏貼。這時會出現(xiàn)兩種情況第一種方法是直接的: rg3.Copy ThisWorkbook.Sheets(str1).Cells(m + 4, 1) 等價于下列三行代碼 : (1)rg3.Copy (2) ThisWorkbook.Sheets('str').Activate (3)ThisWorkbook.Sheet('str').Paste 按理說根本不需要第(2)句,但是不行。 我自己將其理解為假死狀態(tài),所謂的假死是需要接手后才能激活,而且激活也是要有等級的如: rg3.Copy ThisWorkbook.Sheets(str1).Cells(m + 4, 1)這句中rg3是主,后面的是次,我不用管后面的死活,我只要知道它是個目的地就行,因為ThisWorkbook.Sheets....是可以找到的,所以這個方法可以成功。而第二種三行方法的代碼第一句rg3是主,而第三句ThisWorkbook.對象是主,這就擺脫了假死狀態(tài)。所以要對其進行激活,(重點)ThisWorkbook一直沒有變化可以選值,但不可以調(diào)用方法,必須激活后才能。當執(zhí)行到第一句時ActiveWorkbook是第二個表,若要成功執(zhí)行第三句后ActiveWorkbook是第一個表。(重點激活)這是就牽扯到了我認為的激活等級問題。由于Workbook、Worksheet和Range都含有activate方法,如果要變主的是Range類,則激活應(yīng)激活到Sheet,如果你只激活了Workbook是不行的,同樣如果變主的是Sheet,則激活到Workbook就可以。而且激活的必須高于操作的。如用sheet就要激活WorkBook,如果激活Sheet也不行,即激活同等級不行。 |
|
來自: 旅行中的甘藍 > 《EXCEL VBA》