VBA Codes
VBA Codes
Sub CreateDashboardCards( )
Dim ws As Worksheet
Dim card As Shape
Dim topPosition As Double
Dim leftPosition As Double
Set ws = ThisWorkbook.Sheets("Dashboard")
If Not ws Is Nothing Then
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End If
Set ws = ThisWorkbook.Sheets.Add
ws.Name = "Dashboard"
' Card 1
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 1.65 * 72, 0.75 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255) ' White fill
card.Line.Visible = msoFalse ' No border
card.Adjustments.Item(1) = 0.05 ' Border radius
card.Name = "cfilters"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 1.65 * 72 + 12 ' Update left position with margin
' Card 2
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2# * 72, 0.75 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.05
card.Name = "ctsales"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2# * 72 + 12
' Card 3
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2# * 72, 0.75 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.05
card.Name = "ctmargin"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2# * 72 + 12
' Card 4
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2# * 72, 0.75 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.05
card.Name = "cpmargin"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2# * 72 + 12
' Card 5
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 3.8 * 72, 0.75 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.05
card.Name = "ccustcount"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 3.8 * 72 + 12
' Card 6
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2.5 * 72, 5.3 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.05
card.Name = "ctop10"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2.5 * 72 + 12
' Card 7
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 6.6 * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "csalestrend"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 6.6 * 72 + 12
' Card 8
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2.6 * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "ccustsource"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2.6 * 72 + 12
' Card 9
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2.6 * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "csalescity"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2.6 * 72 + 12
' Card 10
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 4.1 * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "csalesservice"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 4.1 * 72 + 12
' Card 11
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 2.5 * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "cdeptmargin"
card.Top = topPosition
card.Left = leftPosition
leftPosition = leftPosition + 2.5 * 72 + 12
' Card 12
Set card = ws.Shapes.AddShape(msoShapeRoundedRectangle, leftPosition, topPosition, 5# * 72, 2.1 * 72)
card.Fill.BackColor.RGB = RGB(255, 255, 255)
card.Line.Visible = msoFalse
card.Adjustments.Item(1) = 0.03
card.Name = "cnewrepeat"
card.Top = topPosition
card.Left = leftPosition
End Sub
Code for Prompt 3
On Error Resume NextSub GeneratePivotTables()
Dim wsData As Worksheet
Dim wsPivot As Worksheet
Dim ptCache As PivotCache
Dim pt As PivotTable
Dim startRow As Long
With cht.Chart
.ChartType = xlLineMarkers
.SetSourceData pt.TableRange1
.ChartTitle.Delete
With .SeriesCollection(1)
.Format.Line.Weight = 1.75
.Format.Line.ForeColor.RGB = RGB(0, 32, 96)
.MarkerBackgroundColor = RGB(255, 255, 255)
.MarkerForegroundColor = RGB(0, 32, 96)
.MarkerSize = 5
.HasDropLines = True
.MarkerStyle = xlMarkerStyleCircle
End With
Call FormatChartGeneral(cht.Chart)
End With
With cht.Chart
.ChartType = xlBarStacked100
.SetSourceData pt.TableRange1
Dim i As Long
For i = 1 To .SeriesCollection.Count
.SeriesCollection(i).Format.Fill.ForeColor.RGB = RGB(0, 32 + (i * 32), 96 + (i * 32))
Next i
Call FormatChartGeneral(cht.Chart)
End With
With cht.Chart
.ChartType = xlDoughnut
.SetSourceData pt.TableRange1
.ChartTitle.Delete
For i = 1 To .SeriesCollection(1).Points.Count
.SeriesCollection(1).Points(i).ExplosionOffset = 3
.SeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = RGB(0, 32 + (i * 16), 96 + (i * 16))
Next i
Call FormatChartGeneral(cht.Chart)
End With
With cht.Chart
.ChartType = xlBarClustered
.SetSourceData pt.TableRange1
.SeriesCollection(1).Format.Fill.ForeColor.RGB = RGB(0, 32, 96)
.ChartTitle.Delete
Call FormatChartGeneral(cht.Chart)
End With
With cht.Chart
.ChartType = xlPie
.SetSourceData pt.TableRange1
.ChartTitle.Delete
For i = 1 To .SeriesCollection(1).Points.Count
.SeriesCollection(1).Points(i).ExplosionOffset = 3
.SeriesCollection(1).Points(i).Format.Fill.ForeColor.RGB = RGB(0, 32 + (i * 16), 96 + (i * 16))
Next i
Call FormatChartGeneral(cht.Chart)
End With
With cht.Chart
.ChartType = xlLineMarkersStacked
.SetSourceData pt.TableRange1
.ChartTitle.Delete
For i = 1 To .SeriesCollection.Count
With .SeriesCollection(i)
.Format.Line.ForeColor.RGB = RGB(0, 32 + (i * 32), 96 + (i * 32))
.Format.Line.Weight = 1.5
.MarkerBackgroundColor = RGB(255, 255, 255)
.MarkerForegroundColor = RGB(0, 32 + (i * 32), 96 + (i * 32))
.MarkerSize = 4
.MarkerStyle = xlMarkerStyleCircle
.Border.Weight = 2
End With
Next i
Call FormatChartGeneral(cht.Chart)
End With
With .Axes(xlValue)
.TickLabels.Format.Line.Visible = False
.TickLabels.Font.Name = "Calibri"
.TickLabels.Font.Size = 7
.TickLabels.Font.Bold = True
.TickLabels.Font.Color = RGB(0, 32, 96)
.NumberFormat = "#,##0"
End With
On Error GoTo 0