2017-05-05 4 views
0

私はピボットグラフを作成しようとしています。しかし、負のシリーズのカップルがあります。だから私は負の軸にシフトし、プライマリとセカンダリの両方の軸のレベルを同じにしようとしたい。VBAを使用するセカンダリ軸とプライマリ軸が同じレベルです

私は次のコードを使用しています。しかし、これは軸を適切にフォーマットするのに役立たない。

Sub createChart() 

On Error Resume Next 

ActiveChart.Delete 
Application.ScreenUpdating = False 

Dim myPT As PivotTable 

Dim primaryMax As Integer 
Dim primaryMin As Integer 
Dim secondaryMax As Integer 
Dim secondaryMin As Integer 
Dim max As Integer 
Dim min As Integer 

Set myPT = ActiveSheet.PivotTables("CPivotTable") 
Set mySheet = Sheets("PivotTable") 
myPT.PivotSelect ("") 

Charts.Add 

ActiveChart.Location Where:=xlLocationAsObject, _ 
Name:=myPT.Parent.Name 
ActiveChart.Parent.Left = Range("D8").Left 
ActiveChart.Parent.Top = Range("D8").Top 

ActiveChart.ChartType = xlArea 



Set ch = ActiveSheet.ChartObjects(1).Chart 
For Each ser In ch.SeriesCollection 
    If ser.Name Like "Var2" Or ser.Name Like "Var3" Then 
     ser.AxisGroup = xlSecondary 
    End If 
Next 

With mySheet 
     With .ChartObjects(1).Chart.Axes(xlValue) 
      primaryMin = .MinimumScale 
      primaryMax = .MaximumScale 
     End With 
     With .ChartObjects(1).Chart.Axes(xlValue, xlSecondary) 
      secondaryMin = .MinimumScale 
      secondaryMax = .MaximumScale 
     End With 

     If primaryMax > secondaryMax Then 
      max = primaryMax 
     Else 
      max = secondaryMax 
     End If 

     If primaryMin < secondaryMin Then 
      min = primaryMin 
     Else 
      min = secondaryMin 
     End If 
     With .ChartObjects(1).Chart.Axes(xlValue) 
      primaryMin = min 
      primaryMax = max 
     End With 
     With .ChartObjects(1).Chart.Axes(xlValue, xlSecondary) 
      secondaryMin = min 
      secondaryMax = max 
     End With 

    End With 



Range("A1").Select 
Application.ScreenUpdating = True 



End Sub 

enter image description here

答えて

0

私は私の問題を解決するために、次のコードを使用していました。他の誰かが同じ問題を抱えている場合に備えて、ここに置く。

Dim PriMax, PriMin 
Dim SecMax, SecMin 

ActiveSheet.ChartObjects(1).Activate 
ActiveChart.Axes(xlValue, xlPrimary).Select 

PriMax = ActiveChart.Axes(xlValue, xlPrimary).MaximumScale 
PriMin = ActiveChart.Axes(xlValue, xlPrimary).MinimumScale 
SecMin = ActiveChart.Axes(xlValue, xlSecondary).MinimumScale 
SecMax = ActiveChart.Axes(xlValue, xlSecondary).MaximumScale 

PriMin = SecMin 
SecMax = PriMax 

ActiveChart.Axes(xlValue, xlPrimary).MaximumScale = PriMax 
ActiveChart.Axes(xlValue, xlPrimary).MinimumScale = PriMin 
ActiveChart.Axes(xlValue, xlSecondary).MaximumScale = SecMax 
ActiveChart.Axes(xlValue, xlSecondary).MinimumScale = SecMin 
関連する問題