Страницы: 1
RSS
VBA.Изменение значения осей для нескольких диаграмм, Принцип продления кода макроса на одном листе
 
Здравствуйте, спецы!
На листе есть Диаграмма 1. Через макрос для нее можно установить минимальное и максимальное значение для осей Х и Y. Если на листе появляется Диаграмма 2, Диаграмма 3 (и т.д.), как продлить код макроса, чтобы также иметь возможность задавать минимальное и максимальное значение для осей этих новых диаграмм? Я пробовал самостоятельно копировать код и менять в нем переменные, имена и т.д. Но не получается, ошибки..
Изменено: Sanja - 04.02.2026 13:23:21
 
Добрый день!
Цитата
как продлить код макроса,
Самый примитивный способ - увеличить число программ.
 
Вариант поуниверсальнее. Обратите внимание на название диаграмм
Скрытый текст
Согласие есть продукт при полном непротивлении сторон
 
Всем спасибо!
 
Ещё вариант. Макрос ищет "min X max X" над диаграммами.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ch As ChartObject, rMin As Range, aMin As Variant
    For Each ch In ActiveSheet.ChartObjects
        Set rMin = GetChartMinMaxRange(ch)
        If Not rMin Is Nothing Then
            If Not Intersect(Target, rMin) Is Nothing Then
                aMin = rMin.Value
                ch.Chart.Axes(xlCategory).MinimumScale = aMin(1, 1) 'ось Х(xlCategory); осьY(xlValue)
                ch.Chart.Axes(xlCategory).MaximumScale = aMin(1, 2) 'ось Х(xlCategory); осьY(xlValue)
                ch.Chart.Axes(xlValue).MinimumScale = aMin(2, 1)
                ch.Chart.Axes(xlValue).MaximumScale = aMin(2, 2)
            End If
        End If
    Next
End Sub
 
Private Function GetChartMinMaxRange(ch As ChartObject) As Range
    Dim rr As Range
    Set rr = ch.Parent.Range(ch.TopLeftCell, ch.BottomRightCell).EntireColumn
    
    Dim rf As Range
    On Error Resume Next
    Set rf = rr.Find("min X max X")
    On Error GoTo 0
    If Not rf Is Nothing Then
        Set GetChartMinMaxRange = rf.Cells(1, 2).Resize(2, 2)
    End If
End Function
Страницы: 1
Читают тему
Наверх