VBA代码的存放位置和宏的存放位置有何关系呢?
代码可以放在SHEET,THISWORK,还有模块中。宏可以存放在所有打开的工作薄,当前工作薄,PERSONAL中。我想知道三个问题。第一,VBA代码存放的位置和宏存放位...
代码可以放在SHEET,THISWORK ,还有模块中。
宏可以存放在所有打开的工作薄,当前工作薄,PERSONAL中。
我想知道三个问题。第一,VBA代码存放的位置和宏存放位置的关系。第二,VBA代码存入的位置分别是什么意思。(SHEET,THISWORK,模块)第三宏的存放的三个位置分别是什么意思。回答后加分。 展开
宏可以存放在所有打开的工作薄,当前工作薄,PERSONAL中。
我想知道三个问题。第一,VBA代码存放的位置和宏存放位置的关系。第二,VBA代码存入的位置分别是什么意思。(SHEET,THISWORK,模块)第三宏的存放的三个位置分别是什么意思。回答后加分。 展开
展开全部
1.宏是通用的,录制后一般保存在模块中,之所以说宏是通用的是因为,在宏代码中所有单元格、行、列的引用都是全局的如当前表的a1单元格操作,宏是通用的,它会对Selection对象,就是你选中的对象,如行,列,单元格进行操作,如果你的选定对象变了,对那个选定对象运行刚刚录制的宏,那么效果是一样的,因为所录制的宏的通用性,所以它被放于模块中,它们的默认属性是Public,所以,你可以在任何其它模块中调用它们,如果你不手动把它改为Private的话。
2.sheet,thisworkbook这是标准模块,所有的xls文件都有的,无论里面有无代码。每一个xls文件有一个thisworkbook模块,这个模块顾名思义,就是指当前工作簿,就是指这个xls文件;而sheet是对应每一个工作表的,它保存对于对应工作表的操作,当然也可以保存对其它工作表的操作,但是有一个区别是:如果在sheet1模块中操作Sheet1中的对象,则可以用相对引用,如:
range("a1").value就返回的是当前表sheet1的a1的值,如果要在该模块操作sheet2的单元格,那么range("a1").value就不行了,必须是sheet2.range("a1").value这里即强调必须是绝对引用,否则操作的对象仍将是sheet1的对象。
3.模块,这是可以任意由用户自己添加的代码块,它们里面的成员,如果无Private声明,则被认为是Public
4.类模块:这是用来创建类的模块,模块名就是类名,类创建好了之后 ,就可以在其它模块中使用它了
5.用户窗体模块:这个是用来添加窗体逻辑的代码窗口,它控制着窗体的可视行为,比如点击某个按钮执行什么操作,选择某个列表项,执行什么操作,如此。。。。我们使用的Windows应用程序都是这样的,也即学好这个,你可以完全用Excel来写程序,而且功能与VB相差无几,因为VBA中同样可以添加各种部件的引用,同样可以使用外来dll同样可以调用Win32API,由此基本上功能无可限量。。。。。。呵呵
如果还有不懂,请给出更细节的提问
2.sheet,thisworkbook这是标准模块,所有的xls文件都有的,无论里面有无代码。每一个xls文件有一个thisworkbook模块,这个模块顾名思义,就是指当前工作簿,就是指这个xls文件;而sheet是对应每一个工作表的,它保存对于对应工作表的操作,当然也可以保存对其它工作表的操作,但是有一个区别是:如果在sheet1模块中操作Sheet1中的对象,则可以用相对引用,如:
range("a1").value就返回的是当前表sheet1的a1的值,如果要在该模块操作sheet2的单元格,那么range("a1").value就不行了,必须是sheet2.range("a1").value这里即强调必须是绝对引用,否则操作的对象仍将是sheet1的对象。
3.模块,这是可以任意由用户自己添加的代码块,它们里面的成员,如果无Private声明,则被认为是Public
4.类模块:这是用来创建类的模块,模块名就是类名,类创建好了之后 ,就可以在其它模块中使用它了
5.用户窗体模块:这个是用来添加窗体逻辑的代码窗口,它控制着窗体的可视行为,比如点击某个按钮执行什么操作,选择某个列表项,执行什么操作,如此。。。。我们使用的Windows应用程序都是这样的,也即学好这个,你可以完全用Excel来写程序,而且功能与VB相差无几,因为VBA中同样可以添加各种部件的引用,同样可以使用外来dll同样可以调用Win32API,由此基本上功能无可限量。。。。。。呵呵
如果还有不懂,请给出更细节的提问
追问
问题(请先回答后总结
1:在VBAPROJECT(工作薄。XLS)的模块与在VBAPROJECT(PERSONAL。XLSB)的模块有何区别。
2:标准模块与类模块的功能区别以及作用域的区别。
3:录制宏保存的位置选在“当前工作薄”为何在THISWORK中找不到。
我觉得这三个问题,归结为一个问题就是我对模块和类模块的功能与作用域不清楚,以至于我不知道我的代码该如何放置。通过你的答案我知道了,模块在的作用域是全局,但是类模块我还是不明白。先
追答
类模块就是用来保存用户自定义对象的模块,它里面有这类对象拥有的方法,属性和字段,属性用来修改字段,这样,使对字段有一个更好的修改方式,而方法则是对象可以执行的操作,比如人可以吃饭,睡觉,工作,思考,学习,假设写一个类,Human那么,通过dim Jobs as New Human,现在“Jobs(乔布斯)”就定义为一个Human对象,他可以工作,比如:Jobs.Work()它可以睡觉,则Jobs.Sleep()等等,这些,就是把这个对象可以执行的动作,封装到类方法中,这样,只要这个对象属于这个类,就可以执行对应的方法,因为此类对象无一例外都有这些方法,Jobs也不例外
类模块不是用来当作方法调用的,它是用来创建某一个类型的,它就像一个模具,而它只用来更好的创建对象,使对象拥有我们方便操作的特征,类就是一个模板,只能通过由它创建的对象来调用类中封装的方法,属性...
http://wenku.baidu.com/view/17ff945377232f60ddcca19d.html这是类模块的具体介绍
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询