4

VBAのコマンドcharts.addは、ブックに新しいグラフ オブジェクトを追加します。F11Excelで叩いても全く同じだと思います。

問題は、このコマンドがその時点で選択されたワークシートとセルの周囲のデータを使用してグラフを作成することです。データがない場合、または使用可能なデータがない場合は、空のチャートが返されます。

私の質問は次のとおりです。 「コマンドに空のチャートを配信させるにはどうすればよいですか?」. その後、グラフに VBA コードを入力するつもりです。

質問に対する簡単な答えは、新しい空のワークシートを作成し、そのワークシートでセル A1 を選択してから新しいグラフを作成することですが、それはかなり見苦しい解決策です。エレガントなソリューションに関するヘルプをいただければ幸いです。

4

5 に答える 5

6

グラフが表示された直後にデータをすぐに削除する行を追加してみてください。

Charts.Add 
ActiveChart.ChartArea.Clear

代替ソリューションを編集しますが、これはデータシートに戻ります:

'select last cell in the sheet which is usually empty
Dim tmpSel As Range
Set tmpSel = Selection
Cells(Rows.Count, Columns.Count).Select
'add chart
Charts.Add
'back to base sheet and select range previously selected
tmpSel.Parent.Activate
tmpSel.Select
于 2013-10-23T10:00:06.480 に答える
4

同じ問題がありました。プロパティを使用してみActiveChart.ChartArea.Clearましたが、クラッシュしました。次にActiveChart.ChartArea.ClearContents、チャートを追加した後に試してみたところ、シリーズを追加できる空白のチャートである望ましい結果が得られました。

于 2014-11-25T18:28:31.430 に答える
2

これを解決するのにかなり苦労しました。私が何をしたとしても、血まみれのExcelはどこかからデータを取得しました。これは本当に面倒でした. .ChartArea.Clear メソッドは、後でチャートを操作するたびにクラッシュしました (新しいシリーズで満たされていても)

これが実際の作業プロジェクトからの私の最終的な解決策です(一部のユーザー固有の変数について申し訳ありません)

Dim Chrt as Chart

' This is "the elegant" method
' Parameters of Add do not actually matter, we will specify all details later
Set Chrt = MySheet.ChartObjects.Add(0, 0, 100, 100).Chart

' And here we start to fill the empty (!) Chart with some useful series... :)
With Chrt

  ' Specifying chart type
  .ChartType = xlXYScatterLinesNoMarkers

  ' Positioning (Page is a range - fragment of my code)
  With .Parent
    .Top = Page(3, 1).Top
    .Left = Page(3, 1).Left
    .Width = Page.Width
    .Height = (Page.Height - (Page(4, 1).Top - Page(1, 1).Top)) ' / 2
  End With

  ' Adding a new serie
  With .SeriesCollection.NewSeries
    .Name = "D" & Work.Cells(iFileRow, 2)
    .XValues = Range(MySheet.Cells(2, 1), MySheet.Cells(DataEnd, 1))
    .Values = Range(MySheet.Cells(2, 10), MySheet.Cells(DataEnd, 10))

    .MarkerStyle = -4142

    ' Formating the series
    With .Format.Line

    ...
于 2014-07-23T22:58:59.017 に答える
1

Excel は、選択したデータ、またはアクティブ セルを含むデータ ブロックを使用して、新しいグラフを作成しようとします。

未使用の範囲の中央にある空白のセルを選択します。プロットするデータがない場合、Excel は空白のグラフを挿入します。

于 2014-07-29T02:48:47.330 に答える