1

だから私は「ダッシュボード」と呼ばれるシートを持っていて、そこにいくつかのチャートを載せていますが、毎週、これらのチャートの基になっているテーブルにデータを追加しています。このテーブルのデータを含む 2 番目のシートは "Historical Totals" で、必要なデータは列 A から E にあります (これにはラベルとヘッダーが含まれます)。チャートの更新を自動化しようとしていますが、これが機能しない理由がよくわかりません。これが私がこれまでに持っているコードです:

Sheets("Dashboard").Select
ActiveSheet.ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData Source:=Sheets("Historical Totals").Range("A1", Range("E1").End(xlDown))

範囲を分離しようとしましたが、適切なデータが選択されているため、どこで間違いを犯しているのか本当にわかりません。

4

2 に答える 2

3

次のことを試してください。Rangeを使用するたびに、データシートを参照する必要があります。

Sheets("Dashboard").ChartObjects("Chart 4").Activate
ActiveChart.SetSourceData _
        Source:=Sheets("Historical Totals").Range(Sheets("Historical Totals").Range("A1"), _
                Sheets("Historical Totals").Range("E1").End(xlDown))
于 2012-12-16T13:02:15.437 に答える
0

worksheet「Historical Totals」にのみテーブルがあると仮定すると、私は通常はxlUp代わりに行きxlDownますが、以下は事実上 Philip A Barnes の答えと同じです:

Sub setArea()

With Excel.ActiveWorkbook
        '.Sheets("Dashboard").Select '<==no need to select for the code to execute
        .Sheets("Dashboard").ChartObjects("Chart 1").Activate
End With

With Excel.ActiveWorkbook.Sheets("Historical Totals")
     Excel.ActiveChart.SetSourceData _
                      Source:=.Range( _
                                    .Cells(1, 1), _
                                    .Cells(.Cells(.Rows.Count, 5).End(Excel.xlUp).Row, 5) _
                                    )
End With

End Sub
于 2012-12-16T22:26:07.123 に答える