2012-10-04 102 views
19

我想重構我的VBA代碼。我很習慣在基於Java的IDE中使用重構多年。 VBA編輯器是否支持任何重構或是否有任何插件? MZ工具沒有任何這樣的功能。vba代碼重構 - 有什麼工具可以幫助嗎?

我希望能夠至少做到以下幾點:1。 重命名變量 2.拆分過程爲子程序,使代碼更易讀 3.改變變量從全球到程序的範圍和反之亦然

+0

到目前爲止還沒有使用它。但看到這個鏈接有幫助嗎? http://visualbasic.about.com/od/usingvbnet/a/refact_4.htm –

+13

我將來會看到酒。 – kingdango

+0

您是否嘗試過Visual Basic版本的Resharper?我知道VBA是不同的,但它可能適用於您的大部分需求。 – Pat

回答

2

我知道在VBA中唯一的'重構'工具是Ctrl + F和Ctrl + R。

+5

不要忘記Ctrl-H來替換。 – Lokerim

+3

這聽起來更像是諷刺而非有用的答案。 – Phrancis

+0

或另存爲'.xlsx' xD。但嚴重的是,Ctrl + H替換也有'使用模式匹配'選項,但它不適用於多行。 – Slai

2

是有....幾乎

在過去的好時光我用這一個。 http://www.moshannon.com/speedferret.html

幫助了我很多,我想我有3.5" 磁盤somewere;)

關鍵是要複製您的Excel代碼訪問或VB6,做你的重構有 更換範圍:解決方案是創造性的。命名和使用替代。 吐痰程序......以及那是一個手動對不起。

它通常是不值得的,除非你有一些嚴重的Excel VBA中的代碼,我會recoment轉換大部分爲C#或VB。 Net dll,您可以在其中重構,測試和一些現代魔法,並且只能在VBA中儘可能少地使用它。

+1

是的,IIRC,速度雪貂仍然可用,但我認爲它在10年內沒有看到任何有意義的發展。我相信Rubberduck VBA增加了更多的功能,並可以在更多的VBA主機上工作,而且它是免費的並且處於積極的發展階段。 – ThunderFrame

20

免責聲明:我大量參與此項目。


Rubberduck是一個開放源代碼加載爲VBA IDE下[非常]活躍的開發中,包括此功能。

版本1.2包括提取方法重構工具:

extract method refactoring

版本1.3包括重命名重構

rename refactoring

2版。0(測試版可用,仍然穩定)包括一打的重構:

Rubberduck 2.0 refactorings

  • 引入參數促進一個局部變量來參數
  • 介紹領域促進一個局部變量來模塊範圍
  • 封裝字段將公共場地變成財產
  • 更接近於使用將僅在1個過程中使用的字段移動到該過程中。或者在第一次使用時立即移動局部變量。
  • 提取界面可讓您選取要提取到接口中的類成員,爲它們創建具有存根的新類模塊,並使原始類實現提取的接口。
  • 實現接口創建一個未實現接口的所有成員存根,所以你並不需要在代碼窗格下拉列表中選擇逐一手動創建:

    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 
    

更多的重構工具在項目的路線圖上,您可以在GitHub上查看。

+9

我個人使用Rubberduck,可以證明它是有用的。 –

+0

太棒了!我想再也不用工具編寫VBA代碼! – raiserle

+1

@raiserle謝謝!隨意在GitHub上爲我們介紹星空)=) –

相關問題