楼主,您好!我水平有限,以我现有的理解,稍为您解答一下。当然,如解答有误或不够详尽的,欢迎网友们指正、补充。
1、您说“窗体按钮程序过大,不能运行”。
答:对于这一点,有点惭愧,我从没遇到、也没想过这个问题。刚刚在百度随便找了一下,可能是关键词不准确吧,也没找到答案。请问一下,您的代码的字符量得有多庞大?庞大到不能运行?运行时系统显示的错误提示是什么呢?这一点很重要,或者问题并不出在“程序过大”上。
2、您说“打算把其中一部分自立一过程……这个过程是不是可仍放在窗体中”。
答:当然可以。首先 VBA的代码是允许模块化的,而基于种种原因,我们也经常是这么干的。运行时,只需用Call调用即可(Call是可以省略的)。至于这个被调用的过程Sub(或函数Function)所“存放的位置”有一定的规律(限制),但如您所说,用窗体中的按钮来调用的过程,放在该窗体内(首选),或放在任一模块中,都是允许的,只是编程方法稍有不同。更建议放在该窗体内,省事。
3、您说“这个过程是不是也可调用窗体的Initialize事件”。
答:窗体的Initialize事件,是窗体初始化时自动执行的事件,涉及到的基本上都是初始化的情况。理论上,这个Initialize事件也是一个过程,是可以用Call来调用的,但没什么实际意义。试想,都初始化完了,再来一次初始化,有什么意义呢?很可能还会(因为重复初始化)导至冲突、出错呢。而有些情况(如清空某个控件中的内容、控件某个控件载入、显示数据的代码)可能会在初始化、以及后续使用时经常、频繁地使用,这样的代码就很值得单独编为一个过程。这样的一个过程,在窗体的Initialize事件中被调用一次,而在后续使用窗体时,也可以被按钮无限次调用。这种情况,倒是会经常出现的。
4、您说“窗体变量是不是也可调用”。
答:您的这个问题,可以归类到“参数传递”(简称“传参”)的问题中。因为上面提到了将一个过程拆分成多个过程,运行中互相调用,那就很自然地涉及到参数传递的问题。传参的方法有很多,常用的有两种。一种是用Call调用过程时,直接在Call语句中加入要传递的参数;另一种是设置公有变量。两种方法各有优缺点,要根据实际情况来选用,而且它们都有一定的语法知识和使用限制,并非三言两语就能解释清楚的,有兴趣的话,可以进一步了解。