Cra*_*aig 3 excel vba excel-2003 excel-vba
好的,第二次尝试编写Stack Overflow问题,如果这看起来很熟悉,请原谅我.
我正在重写一个在2年半的时间内建立的Excel宏,frankenstein风格(添加到零碎).我需要做的一件事就是将数据加载到一个数组中,只加载一次以获得数据的准确性和速度.对于我的技能水平,我将坚持使用Array方法.
我的两种方法是:
那么,Stack Overflow对这两种方法的优点与缺点的看法是什么?谢谢,克雷格......
首先,回答你特别没问的问题:设置一个自定义类并加载其中的数据.说真的,你以后会感谢我的.
好的,关于你的问题.我首先尽可能地限制范围.这意味着我在程序之间传递变量.当您的所有变量都具有最严格的范围时,您将遇到最少的问题.
一旦变量通过两个级别(调用过程到第一层,第一层到第二层),那么我开始对我的结构进行批判性的检查.通常(但不总是)如果所有三个过程都在同一个模块中,我将创建一个模块级变量(使用Private关键字而不是Dim).如果您正确地(而不是任意地)分离模块,您可以拥有模块级变量而没有太大风险.
有一些变量从一开始就是全局变量:包含应用程序名称和应用程序版本的变量; 只要应用程序正在运行,顶级类模块就不应该丢失范围; 保持命令栏名称之类的常量(我知道它们不是变量).我知道我希望这些全球化,所以他们就是这样开始的.
我将要说明模块级变量永远不会迁移到全局变量.全局变量因其性质而以这种方式开始.如果使用模块级变量看起来很麻烦,可能是因为我没有充分理由拆分模块,或者我需要重新考虑我的整个框架.
这并不是说我从来没有欺骗过,并且在我不应该拥有的时候使用全局.我们都做到了,如果你也这样做,你不应该失眠.
所以要正确地预订这篇文章:我放弃使用数组,除非我被迫.我使用自定义类因为
ActiveCell.Value = Invoice.LocalSalesTaxAmount
Run Code Online (Sandbox Code Playgroud)
比调试好得多
ActiveCell.Value = aInvoice(35,2)
Run Code Online (Sandbox Code Playgroud)
万一你认为你需要更多技能来使用自定义类 - 我也是如此.我咬了一口子,其他任何人都可以.