Files
004_comission/jimmycheung93/task4/_poc/main_graph_xlsm/SAProdCatGraph.bas
louiscklaw 2e592cb561 update,
2025-01-31 21:36:48 +08:00

234 lines
7.9 KiB
QBasic

Attribute VB_Name = "SAProdCatGraph"
Function SalesAmountTable(ByVal calc_result As Variant, ByVal FILE_PATH As String, ByVal int_month As Integer)
Const START_CELL As String = "A1"
Dim wb As Workbook
Dim ws As Worksheet
Dim startCell As Range
Dim row As Integer
Dim TravelInsuranceByMonth As Variant
Dim HealthInsuranceByMonth As Variant
Dim LifeInsuranceByMonth As Variant
Dim VehicleInsuranceByMonth As Variant
Dim AccidentInsuranceByMonth As Variant
TravelInsuranceByMonth = calc_result(0)
HealthInsuranceByMonth = calc_result(1)
LifeInsuranceByMonth = calc_result(2)
VehicleInsuranceByMonth = calc_result(3)
AccidentInsuranceByMonth = calc_result(4)
' Open the workbook
Set wb = Workbooks.Open(FILE_PATH)
Set ws = wb.Sheets("Sales Analysis Product Category")
Dim InstType() As Variant
InstType = Array("Accident insurance", "Vehicle insurance", "Life insurance", "Health insurance", "Travel insurance")
' Write headers
Set startCell = ws.Range(START_CELL)
For m = LBound(MONTH_NAMES) To UBound(MONTH_NAMES)
month_name = MONTH_NAMES(m)
row = 0
startCell.Offset(row, 0 + (m * 3)).Value = "Sales unit of " & month_name
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Type"
startCell.Offset(row, 1 + (m * 3)).Value = "Sales"
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Accident insurance"
startCell.Offset(row, 1 + (m * 3)).Value = AccidentInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Vehicle insurance"
startCell.Offset(row, 1 + (m * 3)).Value = VehicleInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Life insurance"
startCell.Offset(row, 1 + (m * 3)).Value = LifeInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Health insurance"
startCell.Offset(row, 1 + (m * 3)).Value = HealthInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Travel insurance"
startCell.Offset(row, 1 + (m * 3)).Value = TravelInsuranceByMonth(m + 1)
Next m
' TODO: replace content to real data
' Save and close the workbook
' wb.Close SaveChanges:=True
End Function
Function SalesAmountGraph(ByVal calc_result As Variant, ByVal FILE_PATH As String, ByVal int_month As Integer)
Dim wb As Workbook
Dim ws As Worksheet
Dim YEAR_GRAPHS_TOP As Variant
Dim YEAR_GRAPHS_LEFT As Variant
YEAR_GRAPHS_TOP = Array(0, 0, 0, 300, 300, 300, 600, 600, 600, 900, 900, 900)
YEAR_GRAPHS_LEFT = Array(0, 400, 800, 0, 400, 800, 0, 400, 800, 0, 400, 800)
Dim DATA_RANGES As Variant
DATA_RANGES = Array("A2:B7", "D2:E7", "G2:H7", "J2:K7", "M2:N7", "P2:Q7", "S2:T7", "V2:W7", "Y2:Z7", "AB2:AC7", "AE2:AF7", "AH2:AI7")
Set wb = Workbooks.Open(FILE_PATH)
Set ws = wb.Sheets("Sales Analysis Product Category")
For m = LBound(MONTH_NAMES) To UBound(MONTH_NAMES)
month_name = MONTH_NAMES(m)
data_range = DATA_RANGES(m)
ActiveSheet.Shapes.AddChart2(251, xlPie).Select
ActiveChart.SetSourceData Source:=Range(data_range)
ActiveChart.SetElement (msoElementLegendNone)
ActiveChart.SetElement (msoElementDataLabelCallout)
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Sales amount of " & month_name
Selection.Format.TextFrame2.TextRange.Characters.Text = "Sales amount of " & month_name
Set cho = ws.ChartObjects(ws.ChartObjects.Count)
Set cht = cho.Chart
cho.Top = YEAR_GRAPHS_TOP(m)
cho.Left = YEAR_GRAPHS_LEFT(m)
cho.Width = 400
cho.Height = 300
Next m
End Function
Function SalesUnitTable(ByVal calc_result As Variant, ByVal FILE_PATH As String, ByVal int_month As Integer)
' Const HEADER_ROW As Long = 1
' Const START_CELL As String = "F1"
' Dim wb As Workbook
' Dim ws As Worksheet
' Dim startCell As Range
Const START_CELL As String = "A10"
Dim wb As Workbook
Dim ws As Worksheet
Dim startCell As Range
Dim row As Integer
Dim TravelInsuranceByMonth As Variant
Dim HealthInsuranceByMonth As Variant
Dim LifeInsuranceByMonth As Variant
Dim VehicleInsuranceByMonth As Variant
Dim AccidentInsuranceByMonth As Variant
TravelInsuranceByMonth = calc_result(0)
HealthInsuranceByMonth = calc_result(1)
LifeInsuranceByMonth = calc_result(2)
VehicleInsuranceByMonth = calc_result(3)
AccidentInsuranceByMonth = calc_result(4)
' Open the workbook
Set wb = Workbooks.Open(FILE_PATH)
Set ws = wb.Sheets("Sales Analysis Product Category")
Dim InstType() As Variant
InstType = Array("Accident insurance", "Vehicle insurance", "Life insurance", "Health insurance", "Travel insurance")
' Write headers
Set startCell = ws.Range(START_CELL)
For m = LBound(MONTH_NAMES) To UBound(MONTH_NAMES)
month_name = MONTH_NAMES(m)
row = 0
startCell.Offset(row, 0 + (m * 3)).Value = "Sales amount of " & month_name
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Type"
startCell.Offset(row, 1 + (m * 3)).Value = "Sales"
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Accident insurance"
startCell.Offset(row, 1 + (m * 3)).Value = AccidentInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Vehicle insurance"
startCell.Offset(row, 1 + (m * 3)).Value = VehicleInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Life insurance"
startCell.Offset(row, 1 + (m * 3)).Value = LifeInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Health insurance"
startCell.Offset(row, 1 + (m * 3)).Value = HealthInsuranceByMonth(m + 1)
row = row + 1
startCell.Offset(row, 0 + (m * 3)).Value = "Travel insurance"
startCell.Offset(row, 1 + (m * 3)).Value = TravelInsuranceByMonth(m + 1)
Next m
' TODO: replace content to real data
End Function
Function SalesUnitGraph(ByVal calc_result As Variant, ByVal FILE_PATH As String, ByVal int_month As Integer)
Dim wb As Workbook
Dim ws As Worksheet
Dim YEAR_GRAPHS_TOP As Variant
Dim YEAR_GRAPHS_LEFT As Variant
YEAR_GRAPHS_TOP = Array(1200, 1200, 1200, 1200 + 300, 1200 + 300, 1200 + 300, 1200 + 600, 1200 + 600, 1200 + 600, 1200 + 900, 1200 + 900, 1200 + 900)
YEAR_GRAPHS_LEFT = Array(0, 400, 800, 0, 400, 800, 0, 400, 800, 0, 400, 800)
Dim DATA_RANGES As Variant
DATA_RANGES = Array("A11:B16", "D11:E16", "G11:H16", "J11:K16", "M11:N16", "P11:Q16", "S11:T16", "V11:W16", "Y11:Z16", "AB11:AC16", "AE11:AF16", "AH11:AI16")
Set wb = Workbooks.Open(FILE_PATH)
Set ws = wb.Sheets("Sales Analysis Product Category")
For m = LBound(MONTH_NAMES) To UBound(MONTH_NAMES)
month_name = MONTH_NAMES(m)
data_range = DATA_RANGES(m)
ActiveSheet.Shapes.AddChart2(251, xlPie).Select
ActiveChart.SetSourceData Source:=Range(data_range)
ActiveChart.SetElement (msoElementLegendNone)
ActiveChart.SetElement (msoElementDataLabelCallout)
ActiveChart.ChartTitle.Select
ActiveChart.ChartTitle.Text = "Sales unit of " & month_name
Selection.Format.TextFrame2.TextRange.Characters.Text = "Sales unit of " & month_name
Set cho = ws.ChartObjects(ws.ChartObjects.Count)
Set cht = cho.Chart
cho.Top = YEAR_GRAPHS_TOP(m)
cho.Left = YEAR_GRAPHS_LEFT(m)
cho.Width = 400
cho.Height = 300
Next m
End Function
Function Helloworld()
Debug.Print "helloworld Sales_Analysis_Product_Category"
End Function