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