ส่วนขยายนี้จะสร้างตัวสร้าง VB, ตัวรับ/ตัวตั้งค่า, รายการคุณลักษณะของคลาส (พร้อมประเภทและค่าของรูปแบบเอาต์พุต) และโรงงานซิงเกิลตันจากการประกาศตัวแปรคลาส VB คุณสามารถเรนเดอร์พวกมันทั้งหมดในคำสั่งเดียวได้เช่นกัน! -
เลือกแอตทริบิวต์ที่คุณต้องการสร้างตัวอย่างข้อมูลและเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้บนคำสั่ง Palette 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. ในกรณีที่คุณไม่ได้บอกว่าแอตทริบิวต์ประเภทใด ส่วนขยายจะเข้าใจในตัวสร้างทั้งหมดว่าแอตทริบิวต์นั้นเป็นประเภท ตัวแปร เช่น:
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 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
MIT © davikawasaki
โปรดส่ง PR หรือปัญหามาให้ฉันเพื่อปรับปรุงโค้ด :)