Мой лист 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)
Но это кажется грязным (слишком много аргументов). Как можно использовать классы для очистки этого типа кода?
Я бы сказал, нет. Причина в том, что VBa/VB6 не имеет реальной поддержки классов в терминах наследования и для того, что вы делаете, имея общие функции для этого, это нормально. Кроме того, возможно, посмотрите на необязательные параметры, поэтому все не нужно передавать. – Jeremy
@Jeremy благодарит за понимание. что вы имеете в виду о наследовании классов, я не знаком с этим. – teepee
вы можете проверить эту статью. https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming) – Jeremy