2017-01-03 11 views
0

vbaを使用してグラフに入力する連続データを選択しようとしています。データは、ユーザーが見たいと思っている年によって変わりますので、右またはそれ以上に拡大することができます。下の3行目は、関連する範囲を選択しようとしたところを示していますが、エラーメッセージが表示されます。最後の行で同じことをした場合に備えて、残りのコードを追加しました。事前にグラフの連続データを選択

Charts.Add 
ActiveChart.ChartType = xlLineMarkers 
ActiveChart.SetSourceData Source:=ActiveSheet.Range("F36", ActiveSheet.Range("F36").End(xlToRight)).Select, PlotBy:=xlRows 
ActiveChart.Location Where:=xlLocationAsObject, Name:="Parameter Forecasts" 
ActiveChart.HasTitle = True 
ActiveChart.HasLegend = False 
ActiveChart.Parent.Height = Range("E10:E34").Height 
ActiveChart.Parent.Width = Range("E10:Y10").Width 
ActiveChart.Parent.Top = Range("E10").Top 
ActiveChart.Parent.Left = Range("E10").Left 
ActiveChart.ChartTitle.Characters.Text = "=Parameter Forecasts!E37" 
ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True 
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Year" 
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = False 
ActiveChart.SeriesCollection.NewSeries.XValues = ActiveSheet.Range("F37", ActiveSheet.Range("F37").End(xlToRight)).Select 

多くのおかげで、 マックス

+1

場合には、あなたが思っていたシャイの答えは、良いのですが、何を、あなたの実際のエラー私は、違反行で '.Select'キーワードを取り除く必要があるかもしれないと思います:) – Wolfie

答えて

1

それはChart型変数/オブジェクトを定義し、それにチャートを設定する方が簡単かつ安全です。その後、Withステートメントを使用して、すべてのプロパティを変更できます。

ActiveChartActiveSheetから離れ、参照オブジェクトを使用する方がよい場合があります。

コード

Option Explicit 

Sub AutoChart() 

Dim MyCht As Chart 
Dim Sht1 As Worksheet 
Dim ShtName As String 

Set MyCht = Charts.Add 
Set Sht1 = Worksheets("Sheet1") '<-- I suggest not tuse ActiveSheet , but the Sheet's name, like Worksheets("Sheet1") 
ShtName = Sht1.Name '<-- this is where you will put your chart later 

' not sure is the string below representes the worksheet's name you want to put your chart 
'ShtName = "Parameter Forecasts" 

With MyCht 
    .ChartType = xlLineMarkers 
    .SetSourceData Sht1.Range("F36", Sht1.Range("F36").End(xlToRight)) 
    .PlotBy = xlRows 
    .Location where:=xlLocationAsObject, Name:=ShtName 

    ' you can keep going setting the rest of your parameters 

End With 

End Sub 

編集1:いくつかの余分な助けを借りて、POを助けるためにChartObjectに変更

Option Explicit 

Sub AutoChart() 

Dim MyChtObj As ChartObject 
Dim Sht1 As Worksheet 
Dim ShtName As String 

Set Sht1 = Worksheets("Parameter Forecasts") '<-- I suggest not tuse ActiveSheet , but the Sheet's name, like Worksheets("Sheet1") 
ShtName = Sht1.Name '<-- this is where you will put your chart later 

Set MyChtObj = Sht1.ChartObjects.Add(100, 100, 500, 500) 

With MyChtObj 
    With .Chart 
     .ChartType = xlColumnClustered ' xlLineMarkers 
     .SetSourceData Sht1.Range("F36", Sht1.Range("F36").End(xlToRight)) 
     .PlotBy = xlRows 
     ' the line below is not need since using the ChartObject 
     '.Location where:=xlLocationAsObject, Name:=ShtName 

     .HasTitle = True 
     .ChartTitle.Text = Sht1.Range("E37").Value 
    End With 

    ' set position marker for the chart object to Cell A1 
    .Top = Sht1.Range("A1").Top 
    .Left = Sht1.Range("A1").Left 

    ' resize Chart Object 
    .Width = 1000 
    .Height = 1000 

    With .Chart.SeriesCollection(1) 
     .ApplyDataLabels ' add data lables 
    End With   

End With 

End Sub 
+0

上記のコードはうまく動作しますが、次のように: .HasTitle = True .ChartTitle.Text = "=パラメータ予測" E37 " 自動化エラーが発生しました。どうすればよいですか? –

+0

@MKaye編集コードを試してください(**編集1 **) –

+0

コードがうまく動作し、チャートがワークシートに配置されます。しかし、それは新しい空白のチャートシートを作成します、あなたはこれを根絶する方法を知っていますか?また、特定のセルにチャートを配置し、そのサイズを変更する方法もあります。最後に、どのようにデータラベルを追加しますか? すべての質問にお詫び申し上げます。 –

関連する問題