Excel VBA質問箱 IV

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

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


21337 / 76732 ←次へ | 前へ→

【60796】Re:グラフの挿入をVBAで行う
発言  kanabun  - 09/3/15(日) 21:21 -

引用なし
パスワード
   ま、あくまでひとつの考え方ですが、
A列の数字がすべて一桁だとすると、
A列をTransposeしてよこ1行にした値を Joinすれば A列データを結合した
単一文字列となります。
たとえば
 A列
2 9
3 8
4 1
5 4
6 0
7 7
8 0
9 0
10 0

とあるとき、以下を実行してみてください。

Sub Try1()
 Dim r As Range
 Dim ss As String
 Dim i As Long
 
 Set r = Range("A2", Cells(Rows.Count, 1).End(xlUp))
 ss = Join(Application.Transpose(r), "")
 MsgBox ss ' ------->    "981407000"
 i = InStr(ss, "000")   
 If i > 0 Then
   MsgBox "範囲の " & i & " 番目から 0 が3つ連続しています"
 Else
   MsgBox "A列に 0 が3つ連続するデータの並びはありません"
   Exit Sub
 End If
 
End Sub

'2桁とかもあるばあいは この考え方の応用で、各セルから先頭1文字だけを
抽出して 上と同じように "000"を探します。

Sub Try2()
 Dim r As Range
 Dim ss As String
 Dim i As Long
 
 Set r = Range("A2", Cells(Rows.Count, 1).End(xlUp))
 ss = Join(Application.Transpose(Application.Replace(r, 2, 10, "")), "")
 MsgBox ss
 i = InStr(ss, "000")
 If i > 0 Then
   MsgBox "範囲の " & i & " 番目から 0 が3つ連続しています"
 Else
   MsgBox "A列に 0 が3つ連続するデータの並びはありません"
   Exit Sub
 End If
 
End Sub

さて、[A2]セル以降を結合した文字列の i番目に "000"が見つかったとすれば、
グラフの元データ範囲は
 [A2].Resize(i+2)
の一つ右ともうひとつ右の範囲をUnion したものということになりますので、
こんな感じで埋め込みグラフにSourceData範囲を指定できます。

(↓グラフの元データ範囲と グラフを描画するシートは同じシートのとき)
Sub Try3()
  Dim r As Range
  Dim ss As String
  Dim i As Long
  Dim c As Range
  
  With Worksheets("Sheet1")
    Set r = .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
    ss = Join(Application.Transpose(r), "")
    i = InStr(ss, "000")
    If i > 0 Then
      MsgBox ss & vbCr _
      & "範囲の " & i & " 番目から 0 が3つ連続しています"
    Else
      MsgBox "A列に 0 が3つ連続するデータの並びはありません"
      Exit Sub
    End If
    With r.Resize(i + 2)
      Set r = Union(.Offset(, 1), .Offset(, 2))
    End With
    
    Set c = .Range("D8").Resize(15, 5)
    With .ChartObjects.Add(c.Left, c.Top, c.Width, c.Height).Chart
      .ChartType = xlXYScatterSmooth
      .SetSourceData Source:=r, PlotBy:=xlColumns
    End With
  End With
End Sub

補足
> Charts.Add
は グラフシートを作成するコードです。
いま作りたいのは 埋め込みグラフですから、そのばあいは
上の例のように、
>  With .ChartObjects.Add(c.Left, c.Top, c.Width, c.Height).Chart

グラフを描画する場所とサイズを指定して 埋め込みグラフ(ChartObjects)を
Add したほうが効率よいと思います。

0 hits

【60794】グラフの挿入をVBAで行う アル 09/3/15(日) 16:29 質問
【60795】Re:グラフの挿入をVBAで行う kanabun 09/3/15(日) 19:48 発言
【60796】Re:グラフの挿入をVBAで行う kanabun 09/3/15(日) 21:21 発言
【60805】Re:ありがとうございます。恥ずかしながら… アル 09/3/16(月) 12:44 質問
【60806】Re:ありがとうございます。恥ずかしながら… kanabun 09/3/16(月) 14:21 発言
【60815】おかげさまで出来ました。 アル 09/3/16(月) 19:41 お礼
【60822】いったん締めた後に恐縮ですが… アル 09/3/17(火) 5:51 質問
【60823】Re:いったん締めた後に恐縮ですが… kanabun 09/3/17(火) 8:47 発言
【60845】Re:いったん締めた後に恐縮ですが… アル 09/3/17(火) 19:36 お礼

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