Attribute VB_Name = "Module1"
Sub OnNameOfRanges()
Attribute OnNameOfRanges.VB_Description = "Макрос записан 16.02.2001 (Vladimir Billig)"
Attribute OnNameOfRanges.VB_ProcData.VB_Invoke_Func = " \n14"
'
' OnNameOfRanges Макрос
' Макрос записан 16.02.2001 (Vladimir Billig)
'

'
    Application.MaxChange = 0.001
    With ActiveWorkbook
        .PrecisionAsDisplayed = False
        .AcceptLabelsInFormulas = True
    End With
End Sub
Public Sub AddChart()
    'Формируется последовательность чисел Фибоначчи.
    'Вставляется диаграмма, отражающая график роста этих чисел.
    Dim myRange As Range
    Dim MySh As Worksheet
    Dim CHOS As ChartObjects
    Dim CHO As ChartObject
    Set MySh = ThisWorkbook.Worksheets(3)
    With MySh
        Set myRange = .Range("A1")
        With myRange
            .Value = "Числа Фибоначчи"
            .Offset(1, 0).FormulaR1C1 = "0"
            .Offset(2, 0).FormulaR1C1 = "1"
            .Offset(3, 0).FormulaR1C1 = "=R[-2]C +R[-1]C"
            .Offset(3, 0).Select
            Selection.AutoFill Destination:=Range("A4:A10"), _
                Type:=xlFillDefault
        End With
        'Добавление диаграммы
        Set CHOS = .ChartObjects
        Set CHO = CHOS.Add(50, 50, 250, 200)
        CHO.Chart.ChartWizard Source:=.Range("A2:A10"), _
            Gallery:=xlLine, Title:="Числа Фибоначчи"
    End With

End Sub

Public Sub WorkWithCharts()
    'Работа с встроенными диаграммами
    Dim CHO As ChartObjects 'коллекция контейнеров
    Dim ChO1 As ChartObject 'контейнер диаграммы
    Dim Ch1 As Chart    'встроенная диаграмма
    With ThisWorkbook
        Set CHO = .Sheets("Лист2").ChartObjects
        Set ChO1 = CHO(2)
        'Меняем внешний вид диаграммы
        ChO1.RoundedCorners = True
        ChO1.Select
        Debug.Print ChO1.Name
        'Получаем диаграмму
        Set Ch1 = ChO1.Chart
        Ch1.HasTitle = True
        Ch1.ChartTitle.Text = "Заказы Февраля"
        Debug.Print Ch1.Name
    'Работа с листами диаграмм
    Dim Ch2 As Chart, Ch3 As Chart
    Dim ChO2 As Object
        Set Ch2 = .Charts(1)    'Лист диаграммы
        Ch2.HasTitle = True
        Ch2.ChartTitle.Text = "Заказы Марта"
        'Контейнер для листа диаграммы
        Set ChO2 = .Charts(2).ChartObjects
        'Работать с этим контейнером практически невозможно!
        'Но особой необходимости в этом нет.
        'Set Ch3 = ChO2.Chart
        'Ch3.ChartTitle = "Заказы Апреля"
    End With

End Sub

Public Sub ChartWithGroups()
    'Построение диаграммы, содержащей несколько групп
    Dim MySh As Worksheet, MyChO As ChartObject, MyCh As Chart
    
    Set MySh = ThisWorkbook.Worksheets(4)
    Set MyChO = MySh.ChartObjects.Add(50, 50, 150, 200)
    Set MyCh = MyChO.Chart
    MyCh.ChartGroups
    
End Sub

Public Sub CreatingChart()
'Эта процедура строит диаграмму
'Добавить новую диаграмму на лист
 Dim MySh As Worksheet, MyChO As ChartObject, MyCh As Chart
 Dim Gr As ChartGroup, SC As SeriesCollection, Sr As Series
 Dim CG As ChartGroups
    Set MySh = ThisWorkbook.Worksheets(4)
    Set MyChO = MySh.ChartObjects.Add(50, 520, 320, 150)
    Set MyCh = MyChO.Chart
    
    'Добавить ряды данных
    Set SC = MyCh.SeriesCollection
    SC.Add Source:=MySh.Range("C27:F27"), RowCol:=xlRows
    SC.Add Source:=MySh.Range("C29:F29"), RowCol:=xlRows
    'Установить тип диаграммы для ряда даных
    Set Sr = MyCh.SeriesCollection(1)
    Sr.ChartType = xlColumnClustered
    Set Sr = MyCh.SeriesCollection(2)
    Sr.ChartType = xlLineMarkers
     Set CG = MyCh.ChartGroups
     Debug.Print CG.Count
     Set Gr = CG(2)
     'Изменить ось категорий
     MyCh.Axes(xlCategory).CategoryNames = _
     Array("янв.", "февр.", "март", "апр.")
    'Добавить свою ось для графика
    Sr.AxisGroup = xlSecondary
    'Изменить внешний вид - цвет графика
    With Sr.Border
        .ColorIndex = 30
        .Weight = xlThin
        .LineStyle = xlContinuous
    End With
    'Sr.Interior.ColorIndex = 30
    Sr.MarkerBackgroundColorIndex = xlColorIndexNone
    Sr.MarkerForegroundColorIndex = 30
End Sub

Public Sub InitEvents()
    Dim myCWE As New CWE
    Set myCWE.ChartWE = ThisWorkbook.Worksheets("Лист4").ChartObjects(1).Chart
End Sub
