vba代码重构 - 有什么工具可以帮助吗?

Sir*_*een 25 excel vba excel-vba

我正在尝试重构我的VBA代码.我很习惯在基于Java的IDE中使用重构多年.VBA编辑器是否支持任何重构或是否有任何加载项?MZ Tools没有任何此类功能.

我希望能够至少执行以下操作:1.重命名变量2.将过程拆分为子过程以使代码更具可读性3.将变量的范围从全局更改为过程,反之亦然

Mat*_*don 33

免责声明:我参与了这个项目.


Rubberduck是[非常]活跃开发中的VBA/VB6 IDE的开源插件,包括此功能.

版本1.3包括重命名重构:

重命名重构

版本2.0(测试版,仍然稳定)包括十几个重构:

Rubberduck 2.0重构

  • Introduce Parameter将局部变量提升为参数
  • 介绍Field将局部变量提升到模块范围
  • Encapsulate Field将公共字段转换为属性
  • Move Closer to Usage将仅在1个过程中使用的字段移动到该过程中.或者在第一次使用之后立即移动局部变量.
  • Extract Interface允许您选择要提取到接口中的类成员,为它们创建带有存根的新类模块,并使原始类实现提取的接口.
  • 实现接口为未实现的接口的所有成员创建存根,因此您无需通过在代码窗格下拉列表中逐个选择它们来手动创建它们:

    Implements IClass1
    
    Public Sub IClass1_DoSomething()
        Err.Raise 5 'TODO implement interface member
    End Sub
    
    Public Function IClass1_GetFoo() As Integer
        Err.Raise 5 'TODO implement interface member
    End Function
    
    Sub DoSomething()
    
    End Sub
    
    Function GetFoo() As Integer
    
    End Function
    
    Run Code Online (Sandbox Code Playgroud)

项目的路线图(包括提取方法)中有更多的重构工具,您可以在GitHub上进行操作.

  • 我个人使用Rubberduck并且可以保证它的实用性. (10认同)

小智 4

我所知道的 VBA 中唯一的“重构”工具是 Ctrl+F 和 Ctrl+R。

  • 不要忘记 Ctrl-H 进行替换。 (8认同)
  • 这听起来更像是讽刺,而不是一个有用的答案。 (8认同)