- ベストアンサー
新しいグラフを作成すると既存グラフが同一になってしまう問題の解決方法
- Excel2003のVBAにて新しいグラフを作成すると、既存グラフが同じになるという問題が発生しています。特定の月度のグラフを作成すると、他の月度のグラフも同じになってしまいます。この問題の解決方法をご存じの方、教えてください。
- グラフ要素データの変化が大きくなった時点で問題に気付きました。マクロ作成時には小さな変化に気付かなかったため、この問題が起こってしまいました。解決方法があれば教えてください。
- マクロを作成するためには、グラフを作成するシートの番号や位置データ、グラフ要素仕訳標などを設定する必要があります。これらを正しく設定することで、問題を回避できる可能性があります。解決策を教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- Excelマクロによるグラフ作成時の元データの取得について
Excelマクロでグラフを作成したいのですが、以下(1)のように書いたら、Grp1.Chart.SetSourceData・・・のところでエラーになってしまいました。そこで、Rangeのところを(2)の様に変更したら、うまくいきました。ただ、自分としては、(1)のようにRangeの中にCellsを使う書き方でやりたいのですが、そのようにはできないでしょうか。 なお、マクロ初心者なので、簡単な表現でお願いします。 (1) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range(Cells(3, 1), Cells(10, 2)), _ PlotBy:=xlColumns End Sub (2) Sub グラフ挿入_Macro() Set Grp1 = Sheets("グラフ1").ChartObjects.Add(10, 10, 500, 200) Grp1.Chart.SetSourceData _ Source:=Sheets("データ").Range("A3:B10"), _ PlotBy:=xlColumns End Sub
- ベストアンサー
- Visual Basic
- VBAでグラフ作成
過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets("sheet1").Range("J11:M35"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- VBAでグラフ作成
過去のログから色々探したのですが、原因が分かりません。お願いいたします。 エクセルのグラフの元データの範囲を ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(\"J11:M35\"), PlotBy:=xlColumns から ActiveChart.SetSourceData Source:=Sheets(\"sheet1\").Range(Cells(11, 10), Cells(35, 13)), PlotBy:=xlColumns に書き換えたら動かなくなってしまいました。 ナゼでしょうか? すいません、初歩で、、。お願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- エクセルのグラフ
グラフが貼り付けられているシートを見えない状態でグラフ描画したいのですがうまくいきません ちなみに、今のコードはこうです。 Sub 電力力率表示() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SetSourceData Source:=Sheets(s_NAME) _ .Range("A2:C146"), PlotBy:=xlColumns End Sub
- 締切済み
- Visual Basic
- グラフのデータ範囲をCellsで指定するとエラー
あるサイトを参考に、VBAでChartType が xlStockOHLC 形式のグラフを作成しようとしています。 ところがデータ範囲の指定方法で .SetSourceData Source:=wsdata1.Range("b1:e100"), PlotBy:=xlColumns あるいは i = 100 .SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns とすれば、正常に動作しますが、 .SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(100, 5)), PlotBy:=xlColumns とすると、Rangeメソッドは失敗しました。_worksheetオブジェクト となります。 両者は同じ範囲を指定しているつもりなのですが、どこが間違いでしょうか。 Option Explicit Sub sample() Dim ws As Worksheet Dim wsdata0, wsdata1 As Worksheet Dim topPosition As Double Dim leftPosition As Double Dim width As Double Dim height As Double Dim chartObj As ChartObject Dim chart0, chart1 As chart Dim i As Integer 'グラフを作成するシートを指定 Set ws = Worksheets("Sheet1") Set wsdata0 = Worksheets("saya00") Set wsdata1 = Worksheets("saya01") 'グラフを表示させる位置を取得 ※例としてセル「G2」の位置を取得 With ws.Range("a1") leftPosition = .Left topPosition = .Top End With 'グラフの横と縦のサイズを設定 width = 1000 height = 500 'ChartObjectオブジェクトを作成 Set chartObj = ws.ChartObjects.Add(leftPosition, topPosition, width, height) 'ChartObjectオブジェクトの名前を設定 chartObj.Name = "saya" 'Chartオブジェクト(グラフ)を作成 Set chart0 = chartObj.chart With chart0 'グラフの作成元としてセル「B2」から一覧の範囲を指定 ' .SetSourceData Source:=wsdata.Range("b1:e100"), PlotBy:=xlColumns ' .SetSourceData Source:=ws.Range("b1:e100"), PlotBy:=xlColumns ' i = 100 ' .SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns .SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(10, 5)), PlotBy:=xlColumns 'グラフの種類を「折れ線グラフ」に指定 .ChartType = xlStockOHLC 'グラフのタイトルを表示 .HasTitle = True 'グラフのタイトルを設定 .ChartTitle.Text = "saya-1" 'グラフのタイトルのフォントサイズを設定 .ChartTitle.Font.Size = "12" End With '後片付け Set chart0 = Nothing Set chart1 = Nothing Set chartObj = Nothing End Sub
- ベストアンサー
- Visual Basic
- グラフ作成
グラフ作成のマクロを作りたくて、マクロの記憶を用いて試してみたのですが、うまくいかないので、もしよろしければおしえてください。 選択範囲をアルファベットを用いたものではなく、cells(k,i)で表したいと思っています。 <マクロ> Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("元データ").Range( _ "A1:B1,A927:B987,Y1:Z1,Y927:Z987"), PlotBy:=xlColumns ’←このグラフ範囲をcells(,)の形式にしたい。 ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" どうぞよろしくお願いします。
- 締切済み
- Visual Basic
- 2本ある折れ線グラフの範囲をVBAで更新したい
2本ある折れ線グラフの範囲をVBAで更新したいと考えております。 excel2003を使っています。 グラフ1の中に系統がひとつなら以下の内容でうまくいきますが、2本ある場合どうすれば 良いか分からず困っております。 Sub サンプル() Dim myPicture As StdPicture Dim buf As String Dim myR With Worksheets("Sheet1") myR = Application.WorksheetFunction.Count(Worksheets("Sheet1").Range("A5:A100")) End With row1 = "5" row2 = myR col1 = "A" Sheets("Sheet2").Activate ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range(col1 & row1 & ":" & col1 & row2 + 4), PlotBy:=xlColumns End Sub 系統を増やした場合の書き方をどなたかお教え頂けませんか。 どうぞ、よろしくお願い致します。
- ベストアンサー
- その他([技術者向] コンピューター)
- VBA グラフを複数作成する場合
マクロにてグラフを複数作成しようと考えています しかし、ループを使用してグラフを作成すると 1つ以上の場合エラーになってしまい作成できません どのように作成したらよいのでしょうか? 2つ目以降のグラフObjectの名前が重なるからエラーになるとか、そういう部分での問題でしょうか? ------------------------------------- Sub Graph For i = 1 To 2 'source_cnt Call Make_Graph(引数) Next End Sub ------------------------------------- Sub Make_Graph(引数) With ActiveSheet.ChartObjects.Add( _ Left:=Range(***).Left, _ Top:=Range(***).Top, _ Width:=Range(***).Width, _ Height:=Range(***).Height) .Chart.ChartType = xlRadar .Chart.SetSourceData Source:= Range(***), PlotBy:=xlColumns .Chart.Location Where:=xlLocationAsObject, Name:=WorkSheet.Name .Chart.HasLegend = False End With -------------------------------------
- ベストアンサー
- Visual Basic
- エクセル2000のマクロについて教えて下さい。
グラフデータを設定したのち180度 回転をさせたいのですが・・・ 例)を記述させていただきますが、その中で追加及び変更する項目 があるとおもいますので よろしくお願いします。 例) ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveChart.SetSourceData Source:=Sheets("担当者別集計").Range("A1:A16,d1:e16"), _ PlotBy:=xlColumns Dim ch As Chart, i As Integer ActiveSheet.ChartObjects("グラフ 1").Activate Set ch = Charts.Add(ではなく("グラフ 1")を設定したい。 ch.ChartType = xl3DColumn ch.SetSourceData Source:=Sheets("担当者別集計").Range("A1:A16,d1:e16") For i = 1 To 180 Step 5 ch.Elevation = -i / 2 ch.Rotation = i Next i For i = 180 To 1 Step -5 ch.Elevation = -i / 2 ch.Rotation = i Next i
- ベストアンサー
- オフィス系ソフト
- Excel グラフ自動作成が遅い VBA
いつもお世話になっております。 今回は、大量のグラフを作る際に動作が異常に遅いため質問させて頂きました。 http://okwave.jp/qa/q8384381.html 下記リンクにあるように、グラフを作成しています。 Function GlaphSetting() 'グラフ色などの設定 Dim C As ChartObject On Error Resume Next For Each C In ActiveSheet.ChartObjects C.Chart.Axes(xlCategory).TickLabels.Orientation = xlVertical '縦書き調整 C.Chart.ChartGroups.GapWidth = 70 '幅を70に C.Chart.ChartArea.Font.Size = 9 '全部のフォントサイズ C.Chart.PlotArea.Interior.ColorIndex = xlNone 'プロットエリア色なし C.Chart.PlotArea.Border.ColorIndex = xlNone '枠線なし C.Chart.Axes(xlValue).HasMajorGridlines = False 'メモリ見えなくする C.Chart.Axes(xlValue).MinimumScale = 0 'メモリ最小値 Next End Function 実行すると、データ量により物凄く遅くなります。 (グラフの数は14、項目数52)※今のところの最大量 実行すると、5分程度はかかるでしょうか・・・ ためしにメッセージボックスを使い、 ストップウォッチで計ってみました。 データ処理 :2秒 その他の処理 :2秒 グラフ作成処理 :1分12秒 グラフの編集 :4秒 でした。 グラフの作成処理をどうにか早くできないでしょうか? 回答よろしくお願い致します。
- ベストアンサー
- Excel(エクセル)
お礼
ご忠告ありがとうごさいます。 反省しております。