2012-03-14 29 views
1
Sub StoragevsQuota() 
    Charts.Add 
    ActiveChart.ChartType = xlColumnClustered 
    ActiveChart.SetSourceData Source:=Sheets("Data").Range("E1:G32") 
    ActiveChart.Location Where:=xlLocationAsObject, Name:="Storage Charts" 
    ActiveChart.Parent.Name = "Used Space vs Disk Quota" 
    ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 
    ActiveChart.ChartTitle.Text = "Used Space vs Disk Quota" 
End Sub 

excel vba内では、E1:G32のボタンをクリックするとグラフが表示されます。しかし、それは、私はそれが32、その後G32Excel vbaグラフ作成、範囲を編集

にその範囲を広げることになるので、これ以上のデータまでダウン例えば、列Eをループするすべての方法を、ほぼ同じ構文を続けるが、それをしたい静範囲

です

その列の長さは、私はいくつの列を生成しませんグラフのために変更することができます誰も私はそれが上記のようにデータを入力するまで、 3列にまたがって?

おかげZ

継続

Sub WeeklySuccessOrFailure() 
'On Error Resume Next 
Dim lastRow As Long 
With Sheets("Data") 
lastRow = .range("AA" & Rows.Count).End(xlUp).Row 
Charts.Add 
ActiveChart.SetSourceData Source:=Sheets("Data").range("AA1:AA & lastRow, AD1:&  lastRow, AE1:AE & lastRow") 
ActiveChart.ChartType = xlColumnClustered 
ActiveChart.Location Where:=xlLocationAsObject, Name:="Job Charts" 
ActiveChart.Parent.Name = "Total Weekly Success or Failure" 
ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 
ActiveChart.ChartTitle.Text = "Total Weekly Success Or Failure Of Jobs" 
End With 
End Sub 

答えて

2

これが何をしようとしているされていますか? (未テスト

Sub StoragevsQuota() 
    Dim lastRow As Long 

    With Sheets("Data") 
     lastRow = .Range("G" & Rows.Count).End(xlup).Row 

     Charts.Add 
     ActiveChart.ChartType = xlColumnClustered 
     ActiveChart.SetSourceData Source:=.Range("E1:G" & lastRow) 
     ActiveChart.Location Where:=xlLocationAsObject, Name:="Storage Charts" 
     ActiveChart.Parent.Name = "Used Space vs Disk Quota" 
     ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 
     ActiveChart.ChartTitle.Text = "Used Space vs Disk Quota" 
    End With 
End Sub 

フォロー

@siddarthちょうどあなたの注意あなたは私がboschieroがコメントしたところ以下のコメントの下に掲載問題で私を助けることができる任意のチャンスをつかむために、ありがとう - Zenaphor 8秒前

これはあなたの試みですか? (AGAIN未テスト

ActiveChart.SetSourceData Source:=Sheets("Data").Range("AA1:AA" & lastRow & _ 
",AD1:AD" & lastRow & ",AE1:AE" & lastRow) 
+0

素晴らしい仕事は大丈夫、大変ありがとうございます – Zenaphor

+0

@siddarthちょっとしたことであなたが私を助けてくれるチャンスをつかむことができました。下のコメントの下に投稿しました。ここではboschieroがコメントしました。 – Zenaphor

+0

@Zenaphor:上記の私の投稿を更新しました。 –

1

個人的に私は私のコードのようなものになるだろう、動的にする私の範囲の開始と終了の細胞を好む:私は好む理由だけ

ActiveChart.SetSourceData Source:=.Range(.cells(1,5),.cells(7,lastRow)) 

しかし、実際に範囲を指定するためのセル表記法。シッダースの答えはかなり魅力的です。

複数の不連続な範囲の場合、私はRange変数を作成し、次にUnionを使用して任意の範囲を割り当てます。私は上記のコードをテストしていないが、私はmyRangeとユニオンを使用している

Sub WeeklySuccessOrFailure() 
'On Error Resume Next 
Dim lastRow As Long 
Dim myRange as Range 
With Sheets("Data") 
lastRow = .range("AA" & Rows.Count).End(xlUp).Row 
Charts.Add 
Set myRange = Union(.range(.cells(1,27),cells(lastRow,27)),_ 
.range(.cells(1,30),.cells(lastRow,30)),_ 
.range(.cells(1,31),.cells(lastRow,31))) 
ActiveChart.SetSourceData Source:= myRange 
ActiveChart.ChartType = xlColumnClustered 
ActiveChart.Location Where:=xlLocationAsObject, Name:="Job Charts" 
ActiveChart.Parent.Name = "Total Weekly Success or Failure" 
ActiveChart.SetElement (msoElementChartTitleCenteredOverlay) 
ActiveChart.ChartTitle.Text = "Total Weekly Success Or Failure Of Jobs" 
End With 
End Sub 

だから、シッダールタの例のように、私は次のことを行うだろう、のiは列のAA、ADおよびAEを望んでいたとしましょう方法の前に。

私はそれがSiddharthの提案よりやや控えめだと言いますが、私はそれを自動化の目的に使う方が簡単です。グラフの列を見つけるマクロの部分を自動化するつもりがない場合(つまり、常に同じ列になる場合)、Siddharthの方法は簡単で、おそらくより直感的です。

+0

@ j boschiero/siddarth私は上記の方法を使用してもそれだけでもうまくいきましたが、私は.rangeを選択する必要があるかどうか質問があります。例えばa1:最後の行、c1:c最後の行、d1:d最後の行?私が試したことの例と私の元の質問 – Zenaphor

0

データが空白の行と列に囲まれた素敵な矩形である場合、非常に簡単にすることができます。データ範囲内のセルを選択し、アクティブセルを含むデータの全領域を見つけたコード、実行します。

Sub MakeChartFromIndicatedRange1() 
    Dim rng As Range 
    Set rng = ActiveCell.CurrentRegion 
    Charts.Add 
    ActiveChart.SetSourceData Source:=rng 
    ' etc. 
End Sub 

するか、ユーザーは全体の範囲を選択するために起こっている場合、このコードは、選択された領域を使用しています:

Sub MakeChartFromIndicatedRange2() 
    Dim rng As Range 
    Set rng = Selection 
    Charts.Add 
    ActiveChart.SetSourceData Source:=rng 
    ' etc. 
End Sub 

または完全に模倣Excelの組み込みのそれは複数のセルだ、または全域がアクティブセルが一つだけのセルが選択されている場合に含まれている場合、選択範囲を使用して、範囲定義、:

Sub MakeChartFromIndicatedRange() 
    Dim rng As Range 
    If Selection.Cells.Count = 1 Then 
    Set rng = ActiveCell.CurrentRegion 
    Else 
    Set rng = Selection 
    End If 
    Charts.Add 
    ActiveChart.SetSourceData Source:=rng 
    ' etc. 
End Sub 
関連する問題