0

チャート グラフを作成する既存の VBA コード (Excel) を変更して、より柔軟にしようとしています。

次のコードは基本的に同じことを行うことを知っています。

Range(Cells(12, 2), Cells(15, 2)).Select    

ほぼ同じです:

Range("B12:B15").Select    

私の目標は、柔軟な行数を表すグラフを持つことでした。

そこで、既存のコードを次のように変更しました。

ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range("B12:B200"), PlotBy:=xlColumns    

Dim LastRow As Integer
LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row    
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns    

これで、コードを実行するたびに、次のメッセージが表示されます。

実行時エラー '1004': アプリケーション定義またはオブジェクト定義のエラー

変数は問題ではありません。LastRow変数を 200 に置き換えても同じ結果になります。

私は何を間違っていますか?

乾杯

ピーター

4

3 に答える 3

-1

LastRow = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row

LastRow = ActiveSheet.UsedRange.Rows.Count

同じだ。

実際のエラーに関する限り、コードの実行時にアクティブなチャート オブジェクトがないように見えます。そのActiveChart.ため、オブジェクト エラーが返されます。

これを試して:

Dim LastRow As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Sheets("Log-Data").Range(Cells(12, 2), Cells(LastRow, 2)), PlotBy:=xlColumns
于 2013-07-23T15:08:17.940 に答える
-1

私は次のことを試しましたが、うまくいきます(セルの単語の前にピリオドを追加します)

Dim LastRow As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count

With Sheets("Log-Data")
Set Myrange = .Range(.Cells(12, 2), .Cells(LastRow, 2))
End With

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns
于 2014-08-21T06:30:55.660 に答える
-3

以下を試して、私に知らせてください

Dim LastRow As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count

With Sheets("Log-Data")
Set Myrange = .Range(Cells(12, 2), Cells(LastRow, 2))
End With

ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Myrange, PlotBy:=xlColumns
于 2014-02-24T16:15:18.983 に答える