使用单元格更改现有图表上的最大/最小

时间:2019-06-10 14:18:57

标签: excel vba

使用单元格更改现有图表上的x / y最小值/最大值

我尝试了一些提供通用代码的网站,但没有一个对我有用

Private Sub ChartDimension()
    With ActiveChart.Axes(xlCategory, xlPrimary)
    .MinimumScale = .Range("B72").Value
    .MaximumScale = .Range("B71").Value
    End With
    With ActiveChart.Axes(xlValue, xlPrimary)
    .MinimumScale = .Range("B70").Value
    .MaximumScale = .Range("B69").Value
    End With
End Sub

“未设置对象变量或带有块变量”是我收到的错误消息

2 个答案:

答案 0 :(得分:2)

您可以使用图表的名称或索引来引用图表。如果您也要使用代码创建图表,则可以将其构建。

Private Sub ChartDimension()

With ActiveSheet
    With .ChartObjects(1).Chart.Axes(xlCategory, xlPrimary) 'or .ChartObjects("Chart 1")
    .MinimumScale = Worksheets("Sheet1").Range("c1").Value
    .MaximumScale = Range("c2").Value
    End With
    With .ChartObjects(1).Chart.Axes(xlValue, xlPrimary)
    .MinimumScale = Range("c3").Value
    .MaximumScale = Range("c4").Value
    End With
End With

End Sub

答案 1 :(得分:1)

您应该尝试设置所有WorksheetChartObjects,这将创建更短,更清晰的代码:

修改后的代码

Option Explicit

Private Sub ChartDimension()

Dim ChtObj As ChartObject
Dim Sht As Worksheet

' set the Worksheet object
Set Sht = ThisWorkbook.Sheets("ORI -PERFO-SONIC-NOZZLES")

' set the Chart-Object
Set ChtObj = Sht.ChartObjects("Chart 1")  ' rename "Chart 1" to your chart's name
With ChtObj
    .Chart.Axes(xlValue, xlPrimary).MaximumScale = Sht.Range("B72").Value
    .Chart.Axes(xlValue, xlPrimary).MaximumScale = Sht.Range("B71").Value

    .Chart.Axes(xlValue, xlPrimary).MaximumScale = Sht.Range("B70").Value
    .Chart.Axes(xlValue, xlPrimary).MaximumScale = Sht.Range("B69").Value
End With

End Sub