Excel VBA質問箱 IV

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

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


23337 / 76738 ←次へ | 前へ→

【58770】Re:グラフのデータ範囲
発言  kanabun  - 08/11/8(土) 9:46 -

引用なし
パスワード
   ▼基礎勉強中 さん:

>・データ範囲はB2:D20→E2:G20→H2:J20→K2:M20。(step2? step3?)

データ範囲 [B2:D20] は 先頭セルと縦横サイズであらわすと、
     Range("B2").Resize(19,3)
ということですね。
     Cells(2,2).Resize(19,3)
という表現でもいいですね。

↓こういう風に整理してみると、変化する部分が 列位置だけということが
 分かります。

'1番目のグラフ 範囲 B2:D20 先頭セル Cells(2,2)  大きさ 19行×3列
'2番目のグラフ 範囲 E2:G20 先頭セル Cells(2,5)  大きさ 19行×3列
'3番目のグラフ 範囲 H2:J20 先頭セル Cells(2,8)  大きさ 19行×3列
'4番目のグラフ 範囲 K2:M20 先頭セル Cells(2,11) 大きさ 19行×3列

変化するのは 列位置(最初は 2列目、以後 +3列づつ右方向にシフト)なので
これを単純に変数で 変化させれば(+3)いいと思います。

↓サンプルです(Shapes.AddChart というメソッドがなかったので、
       ChartObjects.Add で埋め込みグラフを作成しています)

Sub Try1()
  Dim n As Long, nCol As Long
  Dim rngX As Range
  Dim rngY As Range
  Dim Pos As Range
  
  With ActiveSheet
    Set rngX = .Range("A2:A20")
    Set Pos = .Range("B22").Resize(13, 10) '埋め込みグラフの位置
    nCol = 2      '◆最初の列位置
    For n = 1 To 3
      Set rngY = .Cells(2, nCol).Resize(19, 3)
      With .ChartObjects.Add(Pos.Left, Pos.Top, Pos.Width, Pos.Height).Chart
        .SetSourceData Source:=Union(rngX, rngY)
        .ChartType = xlLineMarkers
      End With
      nCol = nCol + 3 '◆次の列位置
      Set Pos = Pos.Offset(14) '次のグラフ位置
    Next
  End With
  
End Sub

0 hits

【58767】グラフのデータ範囲 基礎勉強中 08/11/8(土) 1:15 質問
【58768】Re:グラフのデータ範囲 りん 08/11/8(土) 9:27 回答
【58769】Re:グラフのデータ範囲 ponpon 08/11/8(土) 9:31 発言
【58770】Re:グラフのデータ範囲 kanabun 08/11/8(土) 9:46 発言
【58772】Re:グラフのデータ範囲 基礎勉強中 08/11/8(土) 20:10 お礼

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