Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10484 / 76734 ←次へ | 前へ→

【71796】Re:データを追加に伴い、グラフの位置を移動したい
発言  kanabun  - 12/4/9(月) 9:32 -

引用なし
パスワード
   ▼ドカ さん:
>E列の下に向かってデータを追加しています。
>データが追加される度に、その隣に書いてあるグラフも下に移動するようにしたいです。

面白そうだったので、ぼくもトライしてみました。
1.まず、セルの(E列の)値が変化したときに、何か処理をするには
 シートのChangeイベントを拾って操作します。
2.E列のセルに入力(または値クリア)があったとき、新しいデータ範囲を
 グラフの系列1に書き込むには 系列式の中の値軸部分を変更してやります。
3.グラフの移動は 更新前の元データ範囲の最終セルのTop座標と
 グラフのTopとの差(diff) をおぼえておき、更新後の最終セルから
 更新後のグラフ位置を算出して移動します。

'------------- 以下を対象シートのシートモジュールに書いてください
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Column <> 5 Then Exit Sub
  
  Dim r As Range, c As Range
  Dim zz As String, ss As String
  Dim diff As Double
  
  With Me.ChartObjects(1)
    zz = .Chart.SeriesCollection(1).Formula '現在の系列式
    ss = Split(zz, ",")(2)
    Set r = Me.Range(ss)  '現在の元データ範囲
    diff = r(r.Count).Top - .Top
    Set r = Excel.Range(r(1), r(1).End(xlDown)) '更新範囲
    .Chart.SeriesCollection(1).Formula = _
      Replace(zz, ss, r.Address(External:=True)) 'セット
    .Top = r(r.Count).Top - diff '       グラフ移動
  End With

End Sub

6 hits

【71795】データを追加に伴い、グラフの位置を移動したい ドカ 12/4/9(月) 8:31 質問
【71796】Re:データを追加に伴い、グラフの位置を移動... kanabun 12/4/9(月) 9:32 発言
【71797】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/9(月) 10:36 発言
【71798】Re:データを追加に伴い、グラフの位置を移動... kanabun 12/4/9(月) 11:12 発言
【71799】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/9(月) 12:32 発言
【71800】Re:データを追加に伴い、グラフの位置を移動... kanabun 12/4/9(月) 14:35 発言
【71801】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/9(月) 16:28 発言
【71803】Re:データを追加に伴い、グラフの位置を移動... kanabun 12/4/9(月) 17:09 発言
【71804】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/9(月) 21:23 発言
【71811】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/11(水) 8:04 お礼
【71812】Re:データを追加に伴い、グラフの位置を移動... kanabun 12/4/11(水) 11:19 発言
【71830】Re:データを追加に伴い、グラフの位置を移動... ドカ 12/4/13(金) 7:47 お礼

10484 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free