Это расширение генерирует конструкторы VB, методы получения/установки, список атрибутов класса (с типами и значениями выходного формата) и одноэлементные фабрики из объявлений переменных класса VB. Вы также можете визуализировать их все с помощью одной команды! :)
Выберите атрибуты, для которых вы хотите создать фрагмент, и выполните одну из следующих команд на панели команд Ctrl/Cmd + Shift + P
:
$ VB getters and setters
$ VB constructor
$ VB class attribute list
$ VB class attribute list with output format list
$ VB factory from class attributes
$ VB full class
$ VB full class with factory
1. Частный атрибут Const (требуется ключевое слово Const и атрибуция в конце):
Private Const p_attr As String = "ATTRIBUTE"
2. Форматирование регистров ячеек (требуются ключевые слова FORMAT и VALUE , а также NumberFormat или NumberFormatLocal в качестве типов свойств формата объекта Range в VBA):
' FORMAT NumberFormat VALUE @
' FORMAT NumberFormat VALUE yyyy-mm-dd
' FORMAT NumberFormat VALUE #####0.#0
3. Форматирование цветов ячеек (требуются ключевые слова FORMATCOLOR , BGCOLOR и FGCOLOR , а также числовые значения для цвета фона — от 0 до 56 — и постоянные цвета VB для цвета переднего плана — vbWhite, vbRed, vbBlack и т. д.):
' FORMATCOLOR BGCOLOR 1 FGCOLOR vbWhite
' FORMATCOLOR BGCOLOR 56 FGCOLOR vbBlack
' FORMAT NumberFormat VALUE #####0.#0 FORMATCOLOR BGCOLOR 56 FGCOLOR vbBlack
4. Форматирование регистров ячеек может комбинироваться (тип формата и цвета):
' FORMAT NumberFormat VALUE #####0.#0 FORMATCOLOR BGCOLOR 56 FGCOLOR vbBlack
5. Числовой формат также можно использовать с атрибутом Const :
Private Const p_attr As String = "ATTRIBUTE" ' FORMAT NumberFormat VALUE @
Private Const p_attr As String = "ATTRIBUTE" ' FORMATCOLOR BGCOLOR 56 FGCOLOR vbBlack
Private Const p_attr As String = "ATTRIBUTE" ' FORMAT NumberFormat VALUE @ FORMATCOLOR BGCOLOR 56 FGCOLOR vbBlack
6. Если вы не укажете тип атрибута, расширение во всех генераторах будет понимать, что атрибут имеет тип Variant , например:
Private p_attr As
Private p_attr
7. В следующих случаях будут выдаваться ошибки, поэтому избегайте их любой ценой:
' *** No Public/Private declaration
p_attr As String
' *** No attribution from Const attribute
Private Const p_attr
Private Const p_attr As String = ""
' *** Const attribute with the Const keyword
Private p_attr As String
' *** FORMET instead of FORMAT, TextFormat not acceptable, VALUES instead of VALUE, " usages are not allowed in the format value
Private p_attr As String ' FORMET TextFormat VALUES "@"
' *** FORMETCOLOUR instead of FORMATCOLOR, BG_COLOR instead of BGCOLOR, vbblack instead vbBlack, " usages are not allowed in the BGCOLOR value (needs to be numeric)
Private p_attr As String ' FORMETCOLOUR BG_COLOR "1" FG_COLOR vbblack
' *** BGCOLOR and FGCOLOR without values
Private p_attr As String ' FORMATCOLOR BGCOLOR FGCOLOR
' *** BGCOLOR and FGCOLOR inverted positions, BGCOLOR value out of range (0-56)
Private p_attr As String ' FORMATCOLOR FGCOLOR vbBlack BGCOLOR 57
8. Фабричные случаи выведут файл (если не возникло ошибок или есть хотя бы один непостоянный атрибут) в папке Factory/. Вас могут попросить утвердить переопределение, если конкретный заводской файл уже существует в папке.
Основная идея создания списка атрибутов с соответствующим выходным форматом состоит в том, чтобы упростить вывод каждого значения атрибута в строку листа. Следующий Sub использует список и соответствующие форматы для перебора объекта и вывода всех значений атрибутов в строку:
'*******************************************
'*** @Sub insertGenericRow *****************
'*******************************************
'*** @Argument {Worksheet} ws **************
'*** @Argument {Variant} classObj **********
'*** @Argument {Integer} myLL **************
'*******************************************
'*** Insert a header/shipment/charge *******
'*** inside a worksheet. *******************
'*******************************************
Sub insertGenericRow(ws As Worksheet, classObj As Variant , ByRef myLL As Integer )
Dim listLen As Integer
Dim i As Integer
i = 1
listLen = UBound(classObj.attributesList)
' Iterate through each ordered property from class and send it to the iterated cell with formats
With ws
For i = 0 To listLen
If Not (isEmpty(classObj.attributesFormatTypesList()(i))) Then
If classObj.attributesFormatTypesList()(i) = "NumberFormat" Then
If Not (isEmpty(classObj.attributesFormatValuesList()(i))) Then
.Cells(myLL, i + 1 ).NumberFormat = classObj.attributesFormatValuesList()(i)
End If
End If
End If
' classObj.attributesList() returns the list, and then classObj.attributesList()(i) access an i-element of the list
.Cells(myLL, i + 1 ).value = CallByName(classObj, classObj.attributesList()(i), VbGet)
' Format cell after inserting into sheet
If Not (isEmpty(classObj.attributesFormatTypesList()(i))) Then
If classObj.attributesFormatTypesList()(i) = "NumberFormat" Then
If Not (isEmpty(classObj.attributesFormatValuesList()(i))) Then
.Cells(myLL, i + 1 ).NumberFormat = classObj.attributesFormatValuesList()(i)
End If
End If
End If
Next
End With
myLL = myLL + 1
End Sub
Массачусетский технологический институт © Давикавасаки
Не стесняйтесь присылать мне PR или вопрос по улучшению кода :)