0

グラフを特定の範囲に塗りつぶすにはどうすればよいですか?少し前にVBAを使用してそれを行う方法を見つけましたが、私は一生の間、それを再び行う方法を見つけることができません。F1からK8などの特定の範囲をグラフで埋めたいのですが。そうすれば、左側の他の列がユーザー入力によって変更された場合でも、グラフはその範囲内にとどまり、すべてが見栄えが良くなります。

2番目の質問は、VBAを使用してExcelグラフのマーカーのサイズを変更するにはどうすればよいですか?私は数千のデータポイントをプロットしていますが、デフォルトのマーカーは巨大なひし形であるため、グラフは数千のデータポイントでばかげているように見えます。線はまさにこの信じられないほど太いものです。

そして、もう1つのボーナス質問!VBAを使用してグラフ全体を作成しています。私が作っているシリーズは2つあります。ただし、2つの系列を挿入すると、データポイントのない3番目の系列が追加されます。それが伝説に現れなかったとしても、それは迷惑ではないでしょう。シリーズを削除するにはどうすればよいですか?

ありがとうございました!関連するコードは次のとおりです。CounterとNewTrackerは、ユーザー入力に基づく変数です。私が使用しているデータについては、Counter=13およびNewTracker=1202と思いますが、ここでの私の質問に基づいて、それは重要ではないと思います。例を使用したい場合は、範囲をより適切なものに置き換えてください。:)

Sub Makingthechart()
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatter
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(1).Name = "=Sheet1!$B$1"
    ActiveChart.SeriesCollection(1).XValues = "=Sheet1!$A$2:$A$" & Counter + 1
    ActiveChart.SeriesCollection(1).Values = "=Sheet1!$B$2:$B$" & Counter + 1
    ActiveChart.SeriesCollection.NewSeries
    ActiveChart.SeriesCollection(2).Name = "CFL Calculated"
    ActiveChart.SeriesCollection(2).XValues = "=Sheet1!$XFB$1:$XFB$" & NewTracker
    ActiveChart.SeriesCollection(2).Values = "=Sheet1!$XFC$1:$XFC$" & NewTracker
    With ActiveWorkbook.ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = "CFL Over Time"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Days)"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "CFL"
        .Axes(xlCategory).HasMajorGridlines = True
        .Axes(xlCategory).HasMinorGridlines = True
    End With
End Sub

皆様のご協力に心より感謝申し上げます。皆さんは私がこれまでのインターンシップでかなり成功している理由です!Googleでは見つけることさえできないVBAに関するこれらの小さなことを皆さんが知っているとは信じられません。

4

1 に答える 1

2
Sub Makingthechart()
    Dim co As Shape, cht As Chart
    Dim rngChart As Range, sc As SeriesCollection

    Set rngChart = ActiveSheet.Range("F2:J15")


    Set co = ActiveSheet.Shapes.AddChart(xlXYScatter, rngChart.Cells(1).Left, _
                                          rngChart.Cells(1).Top, _
                                          rngChart.Width, rngChart.Height)

    Set cht = co.Chart
    Set sc = cht.SeriesCollection

    'remove any default series
    Do While sc.Count > 0
        sc(1).Delete
    Loop

    With sc.NewSeries
        .Name = "=Sheet1!$B$1"
        .XValues = "=Sheet1!$A$2:$A$" & counter + 1
        .Values = "=Sheet1!$B$2:$B$" & counter + 1
        .MarkerSize = 3
    End With

    With sc.NewSeries
        .Name = "CFL Calculated"
        .XValues = "=Sheet1!$XFB$1:$XFB$" & newtracker
        .Values = "=Sheet1!$XFC$1:$XFC$" & newtracker
        .MarkerSize = 3
    End With

    With cht
        .HasTitle = True
        .ChartTitle.Characters.Text = "CFL Over Time"
        .Axes(xlCategory, xlPrimary).HasTitle = True
        .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time (Days)"
        .Axes(xlValue, xlPrimary).HasTitle = True
        .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "CFL"
        .Axes(xlCategory).HasMajorGridlines = True
        .Axes(xlCategory).HasMinorGridlines = True
    End With
End Sub
于 2012-12-17T22:19:10.053 に答える