質問: エクセルで複数のグラフの参照先を一度にずらしたい 縦にずらっと並んだ1項目しかない棒グラフ(棒が1本だけ立っている) を複製しては参照先を一つづつずらすという作業をしていたのですがあまりに不毛すぎて苦労しています (そもそも棒グラフの範囲を横に増やせば簡単に棒を増やせるのですが 棒一本一本を動かして自由に配置したいとのことでこういうやり方になっています 完成は16*8*5シートの全てのセルに対して1つの棒グラフがついた形ということになります) 縦16*5シートは作ってあるのですがこれをそれぞれのシートで*8しなくてはなりません 覚えたてのvbaで楽にできないかと色々とこねくりまわしてみたのですが 「複数選択したグラフ一つ一つについて参照先を取得→変更する」というのをどう実現すればよいのかわかりません。 今後もシートは増えるということなので、省力化できればとても楽になります excelのバージョンは2007ですが2003を使用することもできます 宜しくお願いします。
回答: ブック内全てのシートにグラフを複製するのですか? 言い換えれば、ブック内にはそれ以外のシートは存在していませんか? グラフを複製するシートの名前は特定できますか? 取りあえず同一シート内でグラフ増殖の例です。 元のグラフが16個作成済みで同じ列に縦に並んでいると仮定しています。 dim cht as chartobject dim i as long for each cht in activesheet.chartobjects for i = 1 to 7 with cht.duplicate '--グラフが同一列縦に並んでいる場合 .left = range(cht.topleftcell.address).offset(, i).left .top = cht.top '--グラフが同一行横に並んでいる場合 '.left = cht.left '.top = range(cht.topleftcell.address).offset(i).top with .chart.seriescollection(1) if range(split(.formula, ",")(1)).row = range(split(.formula, ",")(2)).row then .xvalues = range(split(.formula, ",")(1)).offset(i) .values = range(split(.formula, ",")(2)).offset(i) else .xvalues = range(split(.formula, ",")(1)).offset(, i) .values = range(split(.formula, ",")(2)).offset(, i) end if end with end with next i next