Private Sub Update_Chart_Click()
Dim mymin, mymax As Integer: Dim mychart_type As String
mychart_type = Range("B34").Value
Dim myrange As String: Dim myvalue_chart As Integer
myvalue_chart = Range("A1").Value
ActiveSheet.ChartObjects("Chart 1").Activate
Select Case mychart_type
Case "One"
myrange = "='Spread Chart'!R40C8:R" & myvalue_chart & "C8"
ActiveChart.SeriesCollection(1).XValues = myrange
myrange = "='Spread Chart'!R40C12:R" & myvalue_chart & "C12"
ActiveChart.SeriesCollection(1).Values = myrange
mymin = Range("D34").Value: mymax = Range("f34").Value
Case "Two"
myrange = "='Spread Chart'!R40C8:R" & myvalue_chart & "C8"
ActiveChart.SeriesCollection(1).XValues = myrange
myrange = "='Spread Chart'!R40C13:R" & myvalue_chart & "C13"
ActiveChart.SeriesCollection(1).Values = myrange
mymin = Range("D35").Value: mymax = Range("f35").Value
End Select
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Axes(xlValue).Select
With ActiveChart.Axes(xlValue)
.MinimumScale = (mymin - 10)
.MaximumScale = (mymax + 10)
.MinorUnitIsAuto = True
.MajorUnit = 10
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
ActiveChart.Axes(xlCategory).Select
With ActiveChart.Axes(xlCategory)
.MinimumScale = IIf(Range("d36").Value - 0.5 < 0, 0, Range("d36").Value - 0.5)
.MaximumScale = Range("f36").Value + 0.5
.MinorUnit = 1
.MajorUnit = 5
.Crosses = xlAutomatic
.ReversePlotOrder = False
.ScaleType = xlLinear
.DisplayUnit = xlNone
End With
Dim Counter As Integer, ChartName As String, xVals As String
Dim visible_counter As Integer
Application.ScreenUpdating = False
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.PlotArea.Select
xVals = ActiveChart.SeriesCollection(1).Formula
xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
Do While Left(xVals, 1) = ","
xVals = Mid(xVals, 2)
Loop
Dim mycheck As String: Dim myrandom As Integer
Dim pointshape As Integer: pointshape = 0
Dim newticker As Boolean: Dim k As Integer
mycheck = " "
Dim myarrayusage As Integer: myarrayusage = 1
Dim mylength As Integer: Dim mylocation As Integer
Dim mytext As String: Dim mytext2 As String
Dim mylabelarray() As Variant
ReDim mylabelarray((Range(xVals).Cells.Count + 1), 4)
Dim mylabeltypearray() As Variant
ReDim mylabeltypearray((Range(xVals).Cells.Count + 1), 4)
Dim shapearray As Variant
shapearray = Array(xlMarkerStyleCircle, xlMarkerStyleDash, xlMarkerStyleDiamond, xlMarkerStyleSquare, xlMarkerStyleTriangle, xlMarkerStylePlus, xlMarkerStyleX, xlMarkerStyleStar)
For Counter = 1 To Range(xVals).Cells.Count
If Range(xVals).Cells.Rows(Counter).Hidden = False Then
mytext = Range(xVals).Cells(Counter, 1).Offset(0, -7).Value
mylength = Len(mytext)
mylocation = 0: mytext2 = "1"
Do Until mytext2 = mycheck
mylocation = mylocation + 1
mytext2 = Mid(mytext, mylocation, 1)
Loop
mytext = Left(mytext, mylocation)
If myarrayusage = 1 Then
newticker = True
Else
newticker = True
For k = 1 To myarrayusage
If mytext = mylabelarray(k, 0) Then
newticker = False
Exit For
End If
Next k
End If
If newticker = True Then
mylabelarray(myarrayusage, 0) = mytext
If pointshape = 7 Then
pointshape = 0
End If
mylabelarray(myarrayusage, 1) = shapearray(pointshape)
mylabeltypearray(Counter, 1) = shapearray(pointshape)
myrandom = Int((8 * Rnd))
Select Case myrandom
Case 0
mylabelarray(myarrayusage, 2) = 0
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 0
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 255
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 1
mylabelarray(myarrayusage, 2) = 0
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 255
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 0
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 2
mylabelarray(myarrayusage, 2) = 0
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 255
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 255
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 3
mylabelarray(myarrayusage, 2) = 255
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 0
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 0
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 4
mylabelarray(myarrayusage, 2) = 255
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 255
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 0
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 5
mylabelarray(myarrayusage, 2) = 255
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 102
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 0
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 6
mylabelarray(myarrayusage, 2) = 255
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 0
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 255
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 7
mylabelarray(myarrayusage, 2) = 153
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 204
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 0
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
Case 8
mylabelarray(myarrayusage, 2) = 204
mylabeltypearray(Counter, 2) = mylabelarray(myarrayusage, 2)
mylabelarray(myarrayusage, 3) = 153
mylabeltypearray(Counter, 3) = mylabelarray(myarrayusage, 3)
mylabelarray(myarrayusage, 4) = 255
mylabeltypearray(Counter, 4) = mylabelarray(myarrayusage, 4)
End Select
pointshape = pointshape + 1
myarrayusage = myarrayusage + 1
End If
If newticker = False Then
mylabeltypearray(Counter, 1) = mylabelarray((k), 1)
mylabeltypearray(Counter, 2) = mylabelarray((k), 2)
mylabeltypearray(Counter, 3) = mylabelarray((k), 3)
mylabeltypearray(Counter, 4) = mylabelarray((k), 4)
End If
End If
Next Counter
visible_counter = 1
For Counter = 1 To Range(xVals).Cells.Count
If Range(xVals).Cells.Rows(Counter).Hidden = False Then
ActiveChart.SeriesCollection(1).Points(visible_counter).HasDataLabel = True
ActiveChart.SeriesCollection(1).Points(visible_counter).HasData.Text = Range(xVals).Cells(Counter, 1).Offset(0, -7).Value
ActiveChart.SeriesCollection(1).Points(visible_counter).Select
With Selection
If mylabeltypearray(Counter, 1) = xlMakerStyleSquare Then
.MarkerBackgroundColor = RGB(CLng(mylabeltypearray(Counter, 2)), CLng(mylabeltypearray(Counter, 3)), CLng(mylabeltypearray(Counter, 4)))
'0 to 255 Red, Green Blue
ElseIf mylabeltypearray(Counter, 1) = xlMarkerStyleTriangle Then
.MarkerBackgroundColor = RGB(CLng(mylabeltypearray(Counter, 2)), CLng(mylabeltypearray(Counter, 3)), CLng(mylabeltypearray(Counter, 4)))
'0 to 255 Red, Green Blue
ElseIf mylabeltypearray(Counter, 1) = xlMarkerStyleCircle Then
.MarkerBackgroundColor = RGB(CLng(mylabeltypearray(Counter, 2)), CLng(mylabeltypearray(Counter, 3)), CLng(mylabeltypearray(Counter, 4)))
'0 to 255 Red, Green Blue
ElseIf mylabeltypearray(Counter, 1) = xlMarkerStyleDiamond Then
.MarkerBackgroundColor = RGB(CLng(mylabeltypearray(Counter, 2)), CLng(mylabeltypearray(Counter, 3)), CLng(mylabeltypearray(Counter, 4)))
'0 to 255 Red, Green Blue
Else
.MarkerBackgroundColor = RGB(255, 255, 255)
'0 to 255 Red, Green Blue
End If
.MarkerForegroundColor = RGB(CLng(mylabeltypearray(Counter, 2)), CLng(mylabeltypearray(Counter, 3)), CLng(mylabeltypearray(Counter, 4)))
'0 to 255 Red, Green Blue
.MarkerStyle = mylabeltypearray(Counter, 1)
End With
ActiveChart.SeriesCollection(1).Points(visible_counter).DataLabel.Select
Selection.AutoScaleFont = True
With Selection.Format.textframe2.textrange.Font
Select Case (Right(Range(xVals).Cells(Counter, 1).Offset(0, -7).Value, 3))
Case "XL1"
.baselineoffset = 0
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(0, 0, 240)
.Fill.Transparency = 0
.Fill.Solid
Case "XL2"
.baselineoffset = 0
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(192, 0, 0)
.Fill.Transparency = 0
.Fill.Solid
Case "XL3"
.baselineoffset = 0
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(0, 112, 192)
.Fill.Transparency = 0
.Fill.Solid
Case Else
.baselineoffset = 0
.Fill.Visible = msoTrue
.Fill.ForeColor.RGB = RGB(50, 50, 50)
.Fill.Transparency = 0
.Fill.Solid
End Select
End With
visible_counter = visible_counter + 1
End If
Next Counter
Range("d42").selct
Application.ScreenUpdating = True
MsgBox "Labels Updated"
End Sub
Bookmarks