【问题标题】:VBA Catia module organizationVBA Catia 模块组织
【发布时间】:2019-03-05 20:48:00
【问题描述】:

我在组织 CATIA 宏时遇到问题,我找不到合适的解决方案。

目前,我有一个大型项目,该项目是从较小的项目发展而来的。它有 10k 行大,写在一个模块中。我想通过创建多个注释模块使其更具可读性和更容易修改/导航。我有我的“主”模块和可以调用其他模块的 GUI。 问题是 CATIA 使我创建的每个模块都可以用作宏。我不希望这样,因为我希望用户为我的主模块创建快捷方式。 我不需要隐藏我的代码,但是如果在导入一个项目时获得 20 个宏,那么很难向新用户解释他/她需要使用哪个宏。

我尝试使用“选项私有模块”,甚至使用密码,但我无法减少该列表中可用宏的数量。我能想到的唯一解决方案(这很疯狂)是将每个过程/函数放在单独的类中。

欢迎任何有关此问题的经验或想法。

提前致谢! :)

【问题讨论】:

  • 将不相关的宏/过程移动到自己的类中到底是什么疯狂?
  • 我有一些检查器来检查加载文档的类型或生成文件的正确名称。我从来没有把它放在单独的类中,它是我一直用作子或函数的东西......
  • 您在类模块中也有SubFunction 过程。
  • 是的。我从没想过为此用途创建类。我会试试的。您还有其他想法如何组织模块吗?您的个人喜好是什么?
  • 谢谢,我会看的:)

标签: excel vba module catia


【解决方案1】:

将过程代码重构为类模块绝对没有任何疯狂。事实上,我什至会称之为最佳实践

您的宏都可以如下所示:

Public Sub DoSomething()
    With New MyAwesomeMacro
        .Execute
    End With
End Sub

Public Sub DoAnotherThing()
    With New SomeOtherMacro
        .Execute
    End With
End Sub

'...

所以你有一个MyAwesomeMacro 类模块和一个Execute 过程(可以根据需要接受参数):

Option Explicit

Public Sub Execute()
    'the old macro code here...
End Sub

【讨论】:

  • 谢谢 Mathieu,我昨天和今天都在测试这个,效果比我希望的要好。我只有一个问题要问你。 “MyAwesomeMacro”是在“With New”命令之后创建的,并用“End With”释放?它的存在范围是什么?如果我想保留它的一些值,我需要将它传递给其他变量/对象?
  • 是的,完全正确;您可以在 InitializeTerminate 处理程序中使用 Debug.Print 语句来确认这一点。您可以像任何WorksheetCollection 对象一样声明为该类型的局部变量,并传递它们。我只是没有看到在“创建和运行”场景中需要这样做。
猜你喜欢
  • 2011-05-05
  • 2023-03-28
  • 1970-01-01
  • 2012-04-25
  • 2017-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多