2016-01-27 56 views
1

我的Excel表創建一個包含各種圖層的地圖,顯示由線條,正方形,點和三角形組成的網絡。我有一個帶參數的每個創作功能,如使用類對象製作不同的形狀

cellLocation As Range '(takes a given cell location) 
shapeType As String '(oval, triangle, rectangle) 
Color     '(red, black, whatever) 
sizeFactor As Double '(factors the shape size as a function of cell's width) 

我只是瞭解現在的類,但不知道是否班會在這種情況下是有用的,我怎麼可能用它們來簡化我的代碼,而不是具有6個不同參數等的功能。

本來我有這樣的功能:

Function CreateWell(cellRng As Range, wellName As String) 
'creates a square of particular color, size, etc in the cellRng and names it wellName 

Function CreateCompressor(cellRng As Range, compName As String) 
'creates an oval of particular color, size , etc. similar to other func. 

然後,因爲我的這些其中唯一的變化是顏色,大小,形狀等我試圖使整體功能約5:

Function CreateShape(cellRng As Range, shpName As String, _ 
      shpColor As String, shpSize as double, shpType As string) 

但這似乎是混亂的(太多的論據)。僱用類如何清理這種類型的代碼?

+0

我會說不。原因是VBa/VB6在繼承方面沒有真正的類支持,並且對於你正在做的事情,使用泛型函數來做到這一點很好。此外,也許看看可選參數,所以一切都不必傳入。 – Jeremy

+0

@傑瑞米感謝您的洞察力。你對類繼承有什麼意義,我對此並不熟悉。 – teepee

+0

你可以查看這篇文章了。 https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming) – Jeremy

回答

0

你是對的。你需要使用面向對象的語言概念。 VBA不是一個完整的面向對象的語言,但它有一些很好的功能。我不能給你寫一個例子,因爲有更多的方法可以做到這一點。也我想評論,而不是寫一個答案,但我的低評級阻止我。 閱讀關於面向對象的概念和使用類,使用不同的郵票和枚舉將實例包裝到類的重載函數中。如果你想用更現代的語言來做(比如像visual basic.net),請閱讀關於繼承和polymorphizem的內容 - 這些也是非常重要的概念,用於實現像你提到的任務。

相關問題