vba程序中为啥首先activate或select一个sheet?

很多操作是对当前选中的sheet生效的
■网友
谢邀,一般是在操作Range对象时需要激活Sheet,或者是在所有的Range前都指定Sheet,最常见的一类报错是方法\u0026#39;Range\u0026#39;作用于对象\u0026#39;_Global\u0026#39;时失败
■网友
因为那是录制的宏程序,自然有这个,而平时写程序的话要尽量避免用active selection,那样会降低效率。
■网友
没说一定要吧,你是录制法入的门?你绝大多数操作前,比如对range进行操作,只要指定了所属工作表,如下:With ThisWorkbook.Sheets("Sheet1") .Range("A1")End With就可以跳过所有active和select的操作了。你看你录制的代码里面,常常会有这样的形式:Range("A1").SelectSelection.······你只需要把select selection.这部分删掉就可以了。当然就像轮子哥 @vczh说的,默认所有操作都是针对当前工作簿的活动工作表的(除了写在worksheet里面的代码,这里默认讨论写在模块里面的代码),如果你不指定所属工作表(with部分),以后你会被各种奇怪的错误烦死的。当然,也有部分操作不能指定所属所属工作表,或者不能在非活动工作表上运行,这时候就需要active一下。大概就这样吧,我写一半的时候忘记了一部分我想到的内容了。
■网友
题主看到的大概以录制宏生成的代码较多。
哈,从来都是手工打代码,select或者activate一个表很少用,因为会影响速度和体验。

■网友
【vba程序中为啥首先activate或select一个sheet?】 如果不加active 或者select的话,默认是当前sheet,不影响使用。要激活或者选择是因为要调用制定的sheet

■网友
可以跳过,写习惯了就无所谓
■网友
如果你要实现的功能和sheet毫无关系,那肯定没必要了。比如只是想把vba当个好用的脚本语言。。。


    推荐阅读