Grrr1337 发表于 2017-9-21 18:15:22

VBA - 如何维护代码?

大家好,
这是一个新手的问题,无论在VBA中维护你的代码,我)都问道:
正如你们中的一些人所知道的 - 在LISP中,它非常简单,你只需要使用文本编辑器来编写和编辑你的代码,然后几个月/几年过去了,你仍然可以重新打开那个.lsp文件并改进或修改它。当然,可选的方法是完成 .vlx 文件并保留 .lsp 文件以进行进一步改进。
但是现在我正在尝试开始使用VBA,这个问题对我来说是第一个缺点:
显然,您创建了几个模块/用户窗体并在其中编写了一些代码,然后将整个项目另存为.dvb文件(ctrl + s)。
之后,您关闭AutoCAD并再次启动新会话,决定重新打开您之前编写的项目,但我发现的唯一方法是尝试导入.dvb文件,这样我最终会得到一个编译的s*it...
那么维护VBA项目(代码)的正确方法是什么?
**** Hidden Message *****

Grrr1337 发表于 2017-9-21 18:55:16

我倾向于导出为文本格式的基本(.bas)文件。

BIGAL 发表于 2017-9-21 19:13:56


我刚注意到可以导出单个模块/用户表单,谢谢李!
嗯..我明白了,所以需要一个导出/导入项目层次结构的函数(我认为这样的选项已经内置了
)。
谢谢你,迈克尔![顺便说一下,平板电脑可能更适合编写]
我想我会暂时坚持使用lisp编写对象脚本,并使用VBAIDE编辑器(以及一些互联网VBA代码)来指导我完成对象脚本任务。
我只是希望一点一点地适应VBA(虽然我最近的问题可以用lisp解决),所以这是我第一次VBA之争。

Grrr1337 发表于 2017-9-21 20:02:00

别忘了,你可以用很多函数编写大型VBA代码,所以你只有一个代码版本。是的,你也可以用lisps编写。您的表单re DCL也保存在文件中,更不用说表单是交互式的,而不是编写代码和测试
一件好事是,您可以将代码分组到一个标题下,以获得一个共同的主题,然后跳转到这组代码。其中,正如在lisp中一样,您必须说,向下滚动到defun顶层,以查看该组中的所有函数

57gmc 发表于 2017-9-22 04:34:46

嗨,BIGAL,只是从我的角度分享印象:
好吧,lisp替代方案(显然)只是动态创建dcl文件。
我同意使用用户表单似乎要容易得多 - 关于对话框的灵活创建以及为每个磁贴指定子例程。
但是我看到的主要优点是,你有标准DCL不可用的磁贴:
- ComboBox
- TabStrip
- 多页
当然,你可以模拟一个类似的行为(例如,使用按钮和嵌套对话框,代表“多页”控件)。
还有一个程序允许生成(标准)DCL代码,同时创建类似于VBA的用户窗体的对话框 - 但我仍然没有尝试过。
我更喜欢使用NP ++和“Indent By Fold”插件来快速轻松地格式化,只需双击一个单词即可突出显示其所有实例(defun)。
另一件事是,当我在主 defun 中本地化了 defun 时,我会保留一个有用的结构:
(defun C:TestMain ( / SubDefun1 SubDefun2 SubDefun3 *error* var1 var2 var3 var3 ) ;

(defun SubDefun1 ...)
(defun SubDefun2 ...)
(defun SubDefun3 ...)

(defun *error* ...) ;

; And now here starts the main code:
(setq
    var1 ...
    var2 ...
    var3 ...
)
)

另一个重要的规则是marko_ribar在我的线程上关于处理非常大/长程序的建议。
从那时起,我从未迷失在我的LISP代码中并且很容易维护它,所以我的调试任务仅限于可疑的评估(其余的都是根据经验,直觉和其他人的例子编写的)。
这就是我从未使用过VLIDE的原因,而是使用NP ++(我对在VLIDE中从头开始编写代码感到不舒服)。但是,我经常使用VLIDE的控制台来检查/跟踪评估,我不确定它们的返回以及它们是否会出错。

BIGAL 发表于 2017-9-22 16:32:43

所有vba都必须编译才能运行。我不明白你在担心什么。如果您有一个旧的dvb,在新版本的vba中打开它会自动升级它。在过去的20年里,我从来没有因为把我的代码放在dvb里而有任何问题。
页: [1]
查看完整版本: VBA - 如何维护代码?