ここから本文です

グラフのデータ範囲を自動拡張するvbaのコードに関する質問です。

aca********さん

2016/6/2800:11:28

グラフのデータ範囲を自動拡張するvbaのコードに関する質問です。

sub extendaData1()

Dim sh As Worksheet
Dim lastRow As Long
Dim startRow As Long
Dim rng1 As Range
Dim rng2 As Range

Set sh worksheets("sheet1")

With sh

lastRow = .Cells(.Rows.Count, "CE").End(xlUp).Row
startRow = .Columns("CE").Find("0").Row
Set rng1 = .Range(.Cells(startRow, "CD"), .Cells(lastRow, "CD"))
Set rng2 = .Range(.Cells(startRow, "CE"), .CElls(lastRow, "CE"))

.ChartObjects("graph1").Chart.SeriesCollection("graph1").Fomula = "SERIES(<" & _
Range(rng1).Addless(External:=True) & "," & _
Range(rng2).Addless(External:=True) & "," & _
1 & ")"

End With

End Sub

---------------------------------------------------------------------------
sub extendaData2()

Dim sh As Worksheet
Dim lastRow As Long
Dim startRow As Long
Dim rng As Range

Set sh worksheets("sheet1")

With sh

lastRow = .Cells(.Rows.Count, "CE").End(xlUp).Row
startRow = .Columns("CE").Find("0").Row
Set rng = .Range(.Cells(startRow, "CD"), .Cells(lastRow, "CE"))

.ChartObjects("graph1").Chart.SetSourceData Source:= .Range(rng)

End With

End Sub


以上、2通りのパターンで実行してみましたが、
「実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。」
と表示されデータ範囲が拡張されません。

ググってみたのですがどうしても改善されないので、どなたかご教授いただけると幸いです。
よろしくお願いいたします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
60
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

som********さん

2016/6/2801:47:32

細かいところはともかく、なぜ

Set sh = worksheets("sheet1")

ではないのですか???

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

hot********さん

2016/6/2804:23:11

例えば extendaData2() で
「実行時エラー'1004' アプリケーション定義またはオブジェクト定義のエラーです。」
が起きているのはどの行でしょうか。

それと、下記はextendaData2()を少し変更したものですが、これを実行してどこでどんなエラーが起こるでしょうか。
また、SeriesCollection(1)とstartRowとlastRowはどんな値でしょうか。

Sub extendaData2()
Dim sh As Worksheet
Dim lastRow As Long
Dim startRow As Long
Dim rng As Range
'
Set sh = Worksheets("sheet1")
With sh
MsgBox "SeriesCollection(1)=" & .ChartObjects("graph1").Chart.SeriesCollection(1).Formula
lastRow = .Cells(.Rows.Count, "CE").End(xlUp).Row
Set rng = .Columns("CE").Find("0")
If rng Is Nothing Then
MsgBox "CE列に'0'がありません"
Exit Sub
End If
startRow = rng.Row
MsgBox "startRow=" & startRow
MsgBox "lastRow=" & lastRow
Set rng = .Range(.Cells(startRow, "CD"), .Cells(lastRow, "CE"))
.ChartObjects("graph1").Chart.SetSourceData Source:=rng
End With
End Sub

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる