none
VB2010によるエクセルのグラフの操作 最大値と最小値 RRS feed

  • 質問

  • お教えください。

    VBAでは以下のようにグラフの横軸の最大、最小値を操作できますが、VB2010での方法をお教えください。

    With Charts("Chart1").Axes(xlValue) 
     .MinimumScale = 10 
     .MaximumScale = 120 
    End With

    https://msdn.microsoft.com/ja-jp/library/office/ff196629.aspx

    2016年3月21日 13:07

回答

  • ChartObjectsからChartを取得します

    Imports Excel = Microsoft.Office.Interop.Excel
    Module Module1
        Sub Main()
            Dim xla As New Excel.Application
            xla.Visible = True
            Dim xlb As Excel.Workbook = xla.Workbooks.Add()
            Dim xls As Excel.Worksheet = xlb.Worksheets(1)
            Dim rng As Excel.Range = xls.Range("A1:B5")
            Dim values As Object(,) = {{0, 0}, {1, 1}, {2, 4}, {3, 9}, {4, 16}}
            rng.Value = values
            Dim newShape As Excel.Shape = xls.Shapes.AddChart(XlChartType:=Excel.XlChartType.xlXYScatterLines)
            Dim chartName As String = newShape.Name
    
            'ChartはまずChartObjectsで受ける
            Dim chartObject As Excel.ChartObject = xls.ChartObjects(chartName)
            Dim chart As Excel.Chart = chartObject.Chart
            chart.SetSourceData(rng)
    
            If (chart.HasAxis(Excel.XlAxisType.xlValue)) Then 'Y軸が設定可能であるか
                Dim axisY As Excel.Axis = chart.Axes(Excel.XlAxisType.xlValue)
                axisY.MaximumScale = 20
                axisY.MinimumScale = -10
            End If
    
            If (chart.HasAxis(Excel.XlAxisType.xlCategory)) Then 'X軸が設定可能であるか
                Dim axisX As Excel.Axis = chart.Axes(Excel.XlAxisType.xlCategory)
                axisX.MaximumScale = 10
                axisX.MinimumScale = -5
            End If
        End Sub
    End Module


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 星 睦美 2016年5月17日 7:02
    2016年3月21日 14:03
  • 遅延バインディングって事ですよね?

    C#のサイトですけど、基本はこのサイトで書かれている方法に従えば行けますよ。

    • 回答としてマーク 星 睦美 2016年5月17日 7:03
    2016年3月31日 7:38

すべての返信

  • ChartObjectsからChartを取得します

    Imports Excel = Microsoft.Office.Interop.Excel
    Module Module1
        Sub Main()
            Dim xla As New Excel.Application
            xla.Visible = True
            Dim xlb As Excel.Workbook = xla.Workbooks.Add()
            Dim xls As Excel.Worksheet = xlb.Worksheets(1)
            Dim rng As Excel.Range = xls.Range("A1:B5")
            Dim values As Object(,) = {{0, 0}, {1, 1}, {2, 4}, {3, 9}, {4, 16}}
            rng.Value = values
            Dim newShape As Excel.Shape = xls.Shapes.AddChart(XlChartType:=Excel.XlChartType.xlXYScatterLines)
            Dim chartName As String = newShape.Name
    
            'ChartはまずChartObjectsで受ける
            Dim chartObject As Excel.ChartObject = xls.ChartObjects(chartName)
            Dim chart As Excel.Chart = chartObject.Chart
            chart.SetSourceData(rng)
    
            If (chart.HasAxis(Excel.XlAxisType.xlValue)) Then 'Y軸が設定可能であるか
                Dim axisY As Excel.Axis = chart.Axes(Excel.XlAxisType.xlValue)
                axisY.MaximumScale = 20
                axisY.MinimumScale = -10
            End If
    
            If (chart.HasAxis(Excel.XlAxisType.xlCategory)) Then 'X軸が設定可能であるか
                Dim axisX As Excel.Axis = chart.Axes(Excel.XlAxisType.xlCategory)
                axisX.MaximumScale = 10
                axisX.MinimumScale = -5
            End If
        End Sub
    End Module


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 星 睦美 2016年5月17日 7:02
    2016年3月21日 14:03
  • 本日、動作確認できました。

    ありがとうございました。

    2016年3月24日 12:21
  • 上記のご質問の追加のご質問です。

    ご教示をお願い致します。

    次のようにObjectを使った方法でエクセルのバージョンに依存せず、参照設定などしないで、

    グラフの横軸の最大、最小値を操作する方法はございますか。

    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlSheet As Object

    xlApp = GetObject(, "Excel.Application")
    xlBook = xlApp.ActiveWorkBook
    xlSheet = xlBook.ActiveSheet

    2016年3月31日 7:21
  • 遅延バインディングって事ですよね?

    C#のサイトですけど、基本はこのサイトで書かれている方法に従えば行けますよ。

    • 回答としてマーク 星 睦美 2016年5月17日 7:03
    2016年3月31日 7:38