vba程序中為什麼首先activate或select一個sheet?
01-28
activate或者select的環節可不可以跳過去呢?
很多操作是對當前選中的sheet生效的
謝邀,一般是在操作Range對象時需要激活Sheet,或者是在所有的Range前都指定Sheet,最常見的一類報錯是方法"Range"作用於對象"_Global"時失敗
因為那是錄製的宏程序,自然有這個,而平時寫程序的話要盡量避免用active selection,那樣會降低效率。
題主看到的大概以錄製宏生成的代碼較多。
哈,從來都是手工打代碼,select或者activate一個表很少用,因為會影響速度和體驗。
如果不加active 或者select的話,默認是當前sheet,不影響使用。要激活或者選擇是因為要調用制定的sheet
可以跳過,寫習慣了就無所謂
沒說一定要吧,你是錄製法入的門?你絕大多數操作前,比如對range進行操作,只要指定了所屬工作表,如下:
With ThisWorkbook.Sheets("Sheet1")
.Range("A1")
End With
就可以跳過所有active和select的操作了。
你看你錄製的代碼裡面,常常會有這樣的形式:Range("A1").Select
Selection.······
你只需要把select selection.這部分刪掉就可以了。
當然就像輪子哥 @vczh說的,默認所有操作都是針對當前工作簿的活動工作表的(除了寫在worksheet裡面的代碼,這裡默認討論寫在模塊裡面的代碼),如果你不指定所屬工作表(with部分),以後你會被各種奇怪的錯誤煩死的。當然,也有部分操作不能指定所屬所屬工作表,或者不能在非活動工作表上運行,這時候就需要active一下。大概就這樣吧,我寫一半的時候忘記了一部分我想到的內容了。如果你要實現的功能和sheet毫無關係,那肯定沒必要了。
比如只是想把vba當個好用的腳本語言。。。
推薦閱讀:
※如何看待思普操作系統狀告微軟?
※win10如何實現定定時休眠?
※微軟基於arm的WinRt系統,底層API是什麼?
※如何評價微軟 Office 全能競技賽?
TAG:微軟Microsoft | MicrosoftExcel | VisualBasic | VBA |