2016-09-07 12 views
0

以下のコードは正しく動作しています。しかし、私のクエリは:--- 現在、私はA1からP4までの入力データシートの値を持っていますが、それは変更することができます。例えば、datavalueはA1からS7までです。 (データは常にExcelシートでAで始まります) しかし、以下のコードでは、手動で範囲を指定しました。レンジの部分で何をする必要があるのですか?自動的に列の範囲がわかります。vbaチャートの動的データ範囲

  Sub to_Draw_chart() 
       Dim ws_InputSheet As String 
       ws_InputSheet = "Sheet3" 
       Charts.Add 
       ActiveChart.ChartType = xlColumnStacked 
       ActiveChart.SetSourceData Source:=Sheets(ws_InputSheet).Range(ws_InputSheet & "!$A$1:$P$4"), PlotBy:=xlColumns 
       With ActiveChart 
        .HasTitle = True 
        .ChartTitle.Characters.Text = "Time_Plotter" 
        .Axes(xlValue).MaximumScale = 1000 
        .Axes(xlValue).MajorUnit = 250 
        .Axes(xlCategory).CategoryType = xlCategoryScale 
        .Axes(xlCategory).CategoryType = xlAutomatic 
       End Sub 
+0

@siddarthRoutがちょうどつかむためにあなたのあなたが私が投稿した問題で私を助けることができる任意のチャンス、 – user28

+0

私の答えのコードを試してください –

答えて

1

アクティブな選択からチャートを作成します、私はあなたが従うことsimplier以下のコードを見つけることだと思う:

Option Explicit 

Sub to_Draw_chart() 

    Dim ws_InputSheet As Worksheet, ws_OutputSheet As Worksheet 
    Dim dataRng As Range 

    Set ws_InputSheet = ThisWorkbook.Sheets("Sheet3") 

    With ws_InputSheet 
     Set dataRng = .Range("A1").CurrentRegion 
    End With 

    Charts.Add 
    ActiveChart.ChartType = xlColumnStacked 

    ActiveChart.SetSourceData Source:=dataRng, PlotBy:=xlColumns 
    With ActiveChart 
     .HasTitle = True 
     .ChartTitle.Characters.Text = "Time_Plotter" 
     .Axes(xlValue).MaximumScale = 1000 
     .Axes(xlValue).MajorUnit = 250 
     .Axes(xlCategory).CategoryType = xlCategoryScale 
     .Axes(xlCategory).CategoryType = xlAutomatic 
    End With 

End Sub 
+0

私はあなたから与えられたコードを試しました。コンパイラエラーが表示されます。オブジェクトでは、オブジェクト/バリアントのユーザ定義タイプでなければなりません。コードはWith With ws_InputSheetです。 – user28

+0

@ user28定義を 'Dim ws_InputSheet As Worksheet'に変更しましたか?後で 'Set ws_InputSheet = ThisWorkbook.Sheets(" Sheet3 ")'に設定しましたか? –

+0

ありがとうございます。出来た。はい、私はワークシートとしてDim ws_InputSheetを変更しませんでした。今はすべてうまくいきます。 – user28

0

以下のコードを試してみてください。この

Option Explicit 

Sub to_Draw_chart() 
    Dim ws_InputSheet As String, ws_OutputSheet As String 

    ws_InputSheet = "Sheet3" 

    Dim dataRng As Range 
    With Worksheets(ws_InputSheet) 
     Set dataRng = .Range("A1").CurrentRegion 
    End With 

    Charts.Add 
    ActiveChart.ChartType = xlColumnStacked 
' ActiveChart.SetSourceData Source:=Sheets(ws_OutputSheet).Range(ws_InputSheet & "!$A$1:$P$4"), PlotBy:=xlColumns 
    ActiveChart.SetSourceData Source:=Sheets(ws_OutputSheet).Range(dataRng.Address(True, True, True, True)), PlotBy:=xlColumns 
    With ActiveChart 
     .HasTitle = True 
     .ChartTitle.Characters.Text = "Time_Plotter" 
     .Axes(xlValue).MaximumScale = 1000 
     .Axes(xlValue).MajorUnit = 250 
     .Axes(xlCategory).CategoryType = xlCategoryScale 
     .Axes(xlCategory).CategoryType = xlAutomatic 
    End With 
End Sub 
+0

ActiveChart.SetSourceDataソース:=シート(ws_OutputSheet).Range(dataRng.Address(True、True、True、True)) 、PlotBy:= xlColumns この行にo f code、Run time error 1004:アプリケーション定義またはオブジェクト定義エラーが表示されています。@ user3598756 – user28

0

を試してみてください。これは私があなたのws_InputSheetが、As WorkSheetを使用

Sub to_Draw_chart() 
    Dim ws_InputSheet As String 
    Dim SelRange As Range 
    Sheets("Sheet3").Activate 
    Set SelRange = Selection 
    ws_InputSheet = "Sheet3" 
    Charts.Add 
    ActiveChart.ChartType = xlColumnStacked 
    ActiveChart.SetSourceData Source:=SelRange, PlotBy:=xlColumns 
    With ActiveChart 
     .HasTitle = True 
     .ChartTitle.Characters.Text = "Time_Plotter" 
     .Axes(xlValue).MaximumScale = 1000 
     .Axes(xlValue).MajorUnit = 250 
     .Axes(xlCategory).CategoryType = xlCategoryScale 
     .Axes(xlCategory).CategoryType = xlAutomatic 
    End With 
End Sub 
+0

私はこのコードを試しましたが、プロットされているデータなしで空白のグラフを生成しています..私の質問は、それはSheet3からデータを選択する必要があることが述べられている?アクティブな選択は、選択されたExcelシートのセルを意味します。 – user28

+0

はい。まったく。したがって、これを実行しているときに別のシートに入っている場合、このコードが機能するにはsheet3に切り替える必要があります。 'Sheets(" Sheet3 ")をインクルードする' Set SelRange = Selection'の前にアクティブにする –

+0

申し訳ありません、それは動作していません。それでも同じ問題。 – user28