根据If Statement Excel Vba更改瀑布图中的最大和最小轴值

时间:2018-04-12 15:59:04

标签: excel-vba vba excel

在我的Excel工作簿中,我的瀑布图轴值根据两个单元格中的值而变化 我限制了我的用户使用set cell作为较低的值而另一个作为较高的值。 问题是,他们不知道哪个项目值更低或更高,直到他们从下拉列表中选择它并查看从另一个工作表中提取的值。

我希望IF语句能够找出两个值中的哪一个更大,并将该值指定为最大值,将另一个值指定为最小值。

我的代码:

Sub Worksheet_Calculcate()

   Dim objCht As ChartObject


   For Each objCht In Sheets("Price Bridge Chart").ChartObjects

      With objCht.Chart

         ' Value (Y) Axis
            With .Axes(xlValue)
            .MaximumScale = ActiveSheet.Range("$D$68").Value + 500000
            .MinimumScale = ActiveSheet.Range("$C$68").Value - 500000

         '   .MajorUnit = ActiveSheet.Range("$K$3").Value / 10 'Chart horizontal lines
            .MajorUnit = (.MaximumScale - .MinimumScale) / 10
            End With

      End With
   Next objCht
End Sub

我可能需要添加两个额外的变量,但我试图让解决方案尽可能简单。

1 个答案:

答案 0 :(得分:1)

事实证明它比我想象的要简单。 我分配了两个额外的变量,并为它们分配了IF语句。

Sub Worksheet_Calculcate()

   Dim objCht As ChartObject
   Dim AxisOne As Long
   Dim AxisTwo As Long


   For Each objCht In Sheets("Price Bridge Chart").ChartObjects

   AxisOne = ActiveSheet.Range("$D$68").Value
   AxisTwo = ActiveSheet.Range("$C$68").Value

      With objCht.Chart

         ' Value (Y) Axis
            With .Axes(xlValue)
            If AxisOne > AxisTwo Then
            .MaximumScale = AxisOne + 500000
            .MinimumScale = AxisTwo - 500000
            Else
            .MaximumScale = AxisTwo + 500000
            .MinimumScale = AxisOne - 500000
            End If


         '   .MajorUnit = ActiveSheet.Range("$K$3").Value / 10 'Chart horizontal lines
            .MajorUnit = (.MaximumScale - .MinimumScale) / 10
            End With

      End With
   Next objCht
End Sub