過去ログ

                                Page     548
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼グラフ表示について  Yoshie 02/12/25(水) 10:54
   ┗Re:グラフ表示について  Jaka 02/12/26(木) 15:30
      ┗グラフ表示範囲を変えてグラフを書き続けるには?  Yoshie 02/12/26(木) 17:11
         ┗Re:グラフ表示範囲を変えてグラフを書き続けるには?  Jaka 02/12/27(金) 10:43
            ┗エラーがとれないです。  Yoshie 02/12/27(金) 14:53
               ┗Re:エラーがとれないです。  Jaka 03/1/6(月) 10:43
                  ┗まだエラーが出ます。  Yoshie 03/1/7(火) 11:50
                     ┗原因が、わかりました。  Jaka 03/1/8(水) 14:35
                        ┗エラーがなくなりました。  Yoshie 03/1/8(水) 16:04
                           ┗Shapes 教えてください。Jakaさ〜ん!!  Yoshie 03/1/15(水) 9:12
                              ┗Re:Shapes 教えてください。  Jaka 03/1/15(水) 13:44
                                 ┗ありがとうございました  Yoshie 03/1/15(水) 14:58

 ───────────────────────────────────────
 ■題名 : グラフ表示について
 ■名前 : Yoshie
 ■日付 : 02/12/25(水) 10:54
 -------------------------------------------------------------------------
   みなさま、こんにちは。グラフ表示についていろいろ試したのですが、
うまくいかないので教えてください。

Sheet1に以下のようなデータがあるとします。データが測定毎に1行ずつ増えます。
凡例は1行目のCH1 CH2 CH3 CH4固定です。
グラフの表示範囲は20データずつにし、20行を越えたら表示範囲を1行下にずらして、データ範囲を設定し折れ線グラフを表示します。

CH1 CH2 CH3 CH4
100 200 300 400
110 150 280 380
80  100 140 300

ActiveChart.SetSourceDataでデータ範囲を指定
ActiveChart.SeriesCollection().Name で凡例を指定

最初の20行は凡例が期待通りなのですが、データ範囲をずらし始めると、
凡例が系列1,系列2,系列3,系列4がちらっと見えてからCH1,CH2,CH3,CH4の表示になります。凡例部分は固定なので一回だけ設定すればいいと思いますが、どうしても系列になってしまうので現状毎回凡例を書き換える必要があり、
凡例表示部分が大きくなったり小さくなったり、ちらちらします。

SetSourceDataで凡例が変わらなくするにはどうしたらいいか教えてください。
開発環境はWin2000+ Excel2000です。
よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:グラフ表示について  ■名前 : Jaka  ■日付 : 02/12/26(木) 15:30  -------------------------------------------------------------------------
   こんにちは。
グラフの勉強がてらに作ってみたけれど...。
これで合ってますか?

Sub 改momo()
  Application.ScreenUpdating = False
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row
  Charts.Add
  ActiveChart.ChartType = xlLineMarkers
  ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:D2"), PlotBy:= _
    xlRows
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .ChartType = xlLineMarkers
    If LastRow <= 21 Then
      LoopFast = 2
      LoopCnt = LastRow - 1
    Else
      LoopFast = LastRow - 21 + 2
      LoopCnt = 20
    End If
    SCN = 0
    For i = LoopFast To LoopFast + LoopCnt
      SCN = SCN + 1
      .SeriesCollection.NewSeries
      .SeriesCollection(SCN).Values = "=Sheet1!R" & i & "C1:R" & i & "C4"
    Next
  End With
  ActiveChart.HasLegend = False
  Application.ScreenUpdating = False
  DoEvents
  End
End Sub
 ───────────────────────────────────────  ■題名 : グラフ表示範囲を変えてグラフを書き続けるには?  ■名前 : Yoshie  ■日付 : 02/12/26(木) 17:11  -------------------------------------------------------------------------
   Jakaさん、レスありがとうございました。
みなさまこんにちは。

Jakaさんのソースを打ち込んで確認しましたが、内容が難しいです。
SeriesCollection.NewSeriesのあたりとか、ScreenUpdatingとか
調べてみます。

よかったら私のソースも見てください。
フォームをロードした1度だけ呼ぶグラフの設定関数とグラフ表示関数があります。
グラフ表示関数はデータを受信したら呼びます。凡例は常に1行目を指定します。

例えば、1秒ごとにグラフ表示範囲を変えてグラフを書く場合でも、SetSourceDataを使えばいいのでしょうか?よろしくお願いします。

Sub Set_Graph()
  Dim i As Integer
  Dim Myws As Object

  Set Myws = Worksheets("Sheet1")
  Myws.Activate
  Myws.Range(Myws.Cells(CellY, 1), Myws.Cells(20, CellY)).Select
  Charts.Add
  With ActiveChart
    .ChartType = xlLineMarkers
    .PlotArea.Select
    .SetSourceData Source:=Sheets("Sheet1").Range(Myws.Cells(1 + CellY, 1), Myws.Cells(20 + CellY, 4)), PlotBy _
    :=xlColumns
  End With
    
  ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"

  ActiveChart.HasTitle = True
  ActiveChart.ChartTitle.Characters.Text = "サンプルソフト"
  ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = False
  ActiveChart.Axes(xlValue, xlPrimary).HasTitle = False
  ActiveChart.HasDataTable = False
  Set Myws = Nothing
End Sub

Sub Disp_Graph()
  Dim Myws As Object
  Dim i As Integer
  
  Set Myws = Worksheets("Sheet1")
  Myws.Activate
  With ActiveChart

    .PlotArea.Select
    If CellY > 21 Then
      GY = GY + 1
      .SetSourceData Source:=Sheets("Sheet1").Range(Myws.Cells(1 + GY, 1), Myws.Cells(21 + GY, 4)), PlotBy :=xlColumns
      For i = 1 To 4
        ActiveChart.SeriesCollection(i).Name = Myws.Cells(1,i).Value
      Next i

    Else
      .SetSourceData Source:=Sheets("Sheet1").Range(Myws.Cells(1, 1), Myws.Cells(21, 4)), PlotBy :=xlColumns

    End If
  End With
    ActiveChart.HasTitle = True
    ActiveChart.ChartTitle.Characters.Text = "サンプルソフト"
    ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = False
    ActiveChart.Axes(xlValue, xlPrimary).HasTitle = False
    ActiveChart.HasDataTable = False

  ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic
  Set Myws = Nothing
End Sub
 ───────────────────────────────────────  ■題名 : Re:グラフ表示範囲を変えてグラフを書き続けるには?  ■名前 : Jaka  ■日付 : 02/12/27(金) 10:43  -------------------------------------------------------------------------
   おはようございます。
本当は、グラフの事はほとんど全くわからないんで、Yoshieさんの作ったものに自分成りに手を加えてみたけれど..。
また間違っていると思いますけど、
できたら、グラフが1つも無い状態で試して見て下さい。
新規作成から変更まで、これでできるようにしてあります。
また、変更時にグラフのチラつきを止める事が出来ませんでした。

>1秒ごとにグラフ表示範囲を変えてグラフを書く場合
下記コードを
Application.Wait Now + TimeValue("00:00:01")
を使ってループするように改良すれば何とかできると思いますが、めちゃくちゃチラつくと思います。

色々勉強させてもらいました。
それと、今日が最後となってしまいますのでごめんなさい。


Sub 改Set_Graph()
  Dim i As Integer
  Dim Myws As Object
  Dim myGf As Object
  Dim ActC As Range
  Dim Flg As Boolean
  Set Myws = Worksheets("Sheet1")
  Myws.Activate
  Set ActC = ActiveCell
  CellY = Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  On Error Resume Next
  Set myGf = ActiveSheet.Shapes("サンプルグラフ")
  If Err <> 0 Then
    Charts.Add
    Flg = True
  Else
    myGf.Select
  End If
  On Error GoTo 0
  With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=Sheets("Sheet1").Range(Myws.Cells(1 + CellY - 20, 1), Myws.Cells(CellY, 4)), PlotBy _
            :=xlColumns
    .Location Where:=xlLocationAsObject, Name:="Sheet1"
  End With
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
  With ActiveChart
    .Location Where:=xlLocationAsObject, Name:="Sheet1"
    .HasTitle = True
    .ChartTitle.Characters.Text = "サンプルソフト"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .HasDataTable = False
    .SeriesCollection(1).Name = "=" & """" & Range("A1").Value & """"
    .SeriesCollection(2).Name = "=" & """" & Range("B1").Value & """"
    .SeriesCollection(3).Name = "=" & """" & Range("C1").Value & """"
    .SeriesCollection(4).Name = "=" & """" & Range("D1").Value & """"
  End With
  If Flg = True Then
    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = "サンプルグラフ"
  End If
  ActC.Activate
  Set Myws = Nothing
  Set myGf = Nothing
  Set ActC = Nothing
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : エラーがとれないです。  ■名前 : Yoshie  ■日付 : 02/12/27(金) 14:53  -------------------------------------------------------------------------
   Jakaさん、お世話になっております。

いろいろ考えてくださって本当にありがとうございます。
試してみました。

>  If Flg = True Then
>    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = "サンプルグラフ"

が、どうしてもエラーになってしまいます。
エラー内容は”指定した名前のアイテムが見つかりませんでした。”です。


その行をコメントにしてもグラフは書いてくれます。
グラフは最初の一回のみ生成したいんです。
Chart.Addを行うと必ずグラフが生成されますよね。
なのでFlgをグローバルにしてaddは一度だけ呼ぶようにしているのですが、
今度は2回目にwith ActiveChart部分を通ろうとすると、With またはオブジェクト変数がないというようなエラーになります。

なんとか試行錯誤してみます。
よいお年をお迎えください。
 ───────────────────────────────────────  ■題名 : Re:エラーがとれないです。  ■名前 : Jaka  ■日付 : 03/1/6(月) 10:43  -------------------------------------------------------------------------
   おはようございます。

>>  If Flg = True Then
>>    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = "サンプルグラフ"
>が、どうしてもエラーになってしまいます。
>エラー内容は”指定した名前のアイテムが見つかりませんでした。”です。
>その行をコメントにしてもグラフは書いてくれます。
>グラフは最初の一回のみ生成したいんです。
>Chart.Addを行うと必ずグラフが生成されますよね。
>なのでFlgをグローバルにしてaddは一度だけ呼ぶようにしているのですが、
>今度は2回目にwith ActiveChart部分を通ろうとすると、With またはオブジェクト変数がない>というようなエラーになります。

どう言った状況で、実行されたのか解らないのでなんとも言えないんですが、グラフを選択(グラフ隅が黒の四角状態)したまま実行するとエラーになるのを直しました。
"サンプルグラフ"と言う名前のグラフが無ければ、グラフを作るようにしてありますから、名前付けのコードをコメントにしちゃうと、"サンプルグラフ"をセットするのに毎回エラーになるので、当然毎回グラフは作られるでしょうね。
グラフが1つも無い状態で、カスタマイズせずに試して見て下さい。
私は、標準モジュールに書いてシート上にフォームの方のボタンにマクロ登録してテストしました。(Win98 & Exc97 と Win98 & Exc2000 にて)


Sub 改Set_Graph()
  Dim Myws As Object, myGf As Object, ActC As Range
  Dim CellY As Long, CYF As Long
  Dim Flg As Boolean
  ActiveCell.Select
  Set ActC = ActiveCell
  Set Myws = Worksheets("Sheet1")
  Myws.Activate
  CellY = Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  On Error Resume Next
  Set myGf = ActiveSheet.Shapes("サンプルグラフ")
  If Err <> 0 Then
    Charts.Add
    Flg = True
  Else
    myGf.Select
  End If
  On Error GoTo 0
  If CellY < 20 Then
    CYF = 2
  Else
    CYF = 1 + CellY - 20
  End If
  
  With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=Sheets("Sheet1").Range(Myws.Cells(CYF, 1), Myws.Cells(CellY, 4)), PlotBy _
            :=xlColumns
    .Location Where:=xlLocationAsObject, Name:="Sheet1"
  End With
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
  With ActiveChart
    .Location Where:=xlLocationAsObject, Name:="Sheet1"
    .HasTitle = True
    .ChartTitle.Characters.Text = "サンプルソフト"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .HasDataTable = False
    .SeriesCollection(1).Name = "=" & """" & Range("A1").Value & """"
    .SeriesCollection(2).Name = "=" & """" & Range("B1").Value & """"
    .SeriesCollection(3).Name = "=" & """" & Range("C1").Value & """"
    .SeriesCollection(4).Name = "=" & """" & Range("D1").Value & """"
  End With
  If Flg = True Then
    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = "サンプルグラフ"
  End If
  ActC.Activate
  Set Myws = Nothing
  Set myGf = Nothing
  Set ActC = Nothing
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : まだエラーが出ます。  ■名前 : Yoshie  ■日付 : 03/1/7(火) 11:50  -------------------------------------------------------------------------
   Jakaさん、お世話になっています。
お返事ありがとうございます。

昨日も言われたとおり標準モジュールにその通り書いて試したのですが、
エラーが出てしまいます。
何が違うのでしょう。根気強くやってみます。
また書き込みしますのでよろしくお願いします!

環境はWin2000(SP2)+Excel2000です。
 ───────────────────────────────────────  ■題名 : 原因が、わかりました。  ■名前 : Jaka  ■日付 : 03/1/8(水) 14:35  -------------------------------------------------------------------------
   こんにちは。
エラーになる原因が、わかりました。
.Location Where:=xlLocationAsObject, Name:="Sheet1"
上でのような所でシート名を固定していたからでした。
私のテスト環境では、エラーにならなかったんで解りませんでした。つまり私のチョンボなんですけど。
修正とともにつまらない物を加えて遊んでみました。
新規ブックで試して見て下さい。簡単なデータを自分で作っていますので、データは無くてもかまいません。結構チラつきます。


Sub これを実行()
  データ
  Application.Wait Now + TimeValue("00:00:02")
  TTTT
  AA = 100
  For i = 1 To 7
    Select Case i
     Case 1, 3, 5
        AA = AA + 20
     Case 2, 4, 6
        AA = AA - 20
     Case Else
        AA = AA + 50
    End Select
    RRo = Cells(Rows.Count, "A").End(xlUp).Row + 1
    Cells(RRo, 1).Value = AA
    Cells(RRo, 2).Value = AA + 10
    Cells(RRo, 3).Value = AA + 20
    Cells(RRo, 4).Value = AA + 30
    AA = AA + 10
    Application.Wait Now + TimeValue("00:00:02")
    TTTT
  Next
End Sub

Sub データ()
Range("A1").Value = "CH1": Range("B1").Value = "CH2"
Range("C1").Value = "CH3": Range("D1").Value = "CH4"
Range("A2").Value = 100: Range("B2").Value = 200
Range("C2").Value = 300: Range("D2").Value = 400
Range("A3").Value = 110: Range("B3").Value = 150
Range("C3").Value = 280: Range("D3").Value = 380
Range("A4").Value = 80: Range("B4").Value = 100
Range("C4").Value = 140: Range("D4").Value = 300
Range("A5").Value = 50: Range("B5").Value = 50
Range("C5").Value = 50: Range("D5").Value = 50
Range("A6").Value = 100: Range("B6").Value = 200
Range("C6").Value = 300: Range("D6").Value = 400
AA = 100
For i = 7 To 21
  Cells(i, 1).Value = AA
  Cells(i, 2).Value = AA + 10
  Cells(i, 3).Value = AA + 20
  Cells(i, 4).Value = AA + 30
  AA = AA + 10
Next
End Sub

Sub TTTT()
  Dim Myws As Object, myGf As Object, ActC As Range
  Dim CellY As Long, CYF As Long
  Dim Flg As Boolean, GrafName As String
  
  GrafName = "サンプルグラフ2"
  ActiveCell.Select
  Set ActC = ActiveCell
  Set Myws = ActiveSheet
  Myws.Activate
  CellY = Cells(Rows.Count, "A").End(xlUp).Row
  Application.ScreenUpdating = False
  
  On Error Resume Next
  Set myGf = ActiveSheet.Shapes(GrafName)
  If Err <> 0 Then
    Charts.Add
    Flg = True
  Else
    myGf.Select
  End If
  On Error GoTo 0
  If CellY < 20 Then
    CYF = 2
  Else
    CYF = 1 + CellY - 20
  End If
  With ActiveChart
    .ChartType = xlLineMarkers
    .SetSourceData Source:=Myws.Range(Myws.Cells(CYF, 1), Myws.Cells(CellY, 4)), PlotBy _
            :=xlColumns
    .Location Where:=xlLocationAsObject, Name:=Myws.Name
  End With
  With ActiveChart
    .HasTitle = False
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
  End With
  With ActiveChart
    .Location Where:=xlLocationAsObject, Name:=Myws.Name
    .HasTitle = True
    .ChartTitle.Characters.Text = "サンプルソフト"
    .Axes(xlCategory, xlPrimary).HasTitle = False
    .Axes(xlValue, xlPrimary).HasTitle = False
    .HasDataTable = False
    .SeriesCollection(1).Name = "=" & """" & Range("A1").Value & """"
    .SeriesCollection(2).Name = "=" & """" & Range("B1").Value & """"
    .SeriesCollection(3).Name = "=" & """" & Range("C1").Value & """"
    .SeriesCollection(4).Name = "=" & """" & Range("D1").Value & """"
  End With
  If Flg = True Then
    ActiveSheet.Shapes(Mid(ActiveChart.Name, InStr(1, ActiveChart.Name, " ") + 1)).Name = GrafName
  End If
  ActC.Activate
  Set Myws = Nothing
  Set myGf = Nothing
  Set ActC = Nothing
  Application.ScreenUpdating = True
End Sub
 ───────────────────────────────────────  ■題名 : エラーがなくなりました。  ■名前 : Yoshie  ■日付 : 03/1/8(水) 16:04  -------------------------------------------------------------------------
   Jakaさん、ありがとうございます。
動作確認してみましたら、エラーがなくなりました。
それに、グラフ表示もVery Goodです!

Jakaさんを手本にお勉強していきたいのですが、
最近PCの調子が悪くて、今日はマザーボードを取り替えたり
PCを組み立てている最中で。

明日からごそごそプログラムを1行づつ追ってみます。
わからないところがあったら教えてください。
よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Shapes 教えてください。Jakaさ〜ん!!  ■名前 : Yoshie  ■日付 : 03/1/15(水) 9:12  -------------------------------------------------------------------------
   Jakaさん、皆様おはようございます。

グラフ表示の件動作するようになったのですが、ヘルプで調べてもコードが理解できないので4項目について教えてください。

TTTT関数の中です。

1.CellY = Cells(Rows.Count,"A").End(xlUp).Row
 Rows.Countには65536が入っているようです。End(xlUp).Rowが何をしているかわからないです。
 
2.Set myGf = ActiveSheet.Shapes(GrafName)
 Shapesは何をしているのでしょうか?

3..SeriesCollection(1).Name = "=" & """" & Range("A1").Value & """"
 これは.SeriesCollection(1).Name = Range("A1").Valueでも同じ表示になるような気がしますが、何か意味があるのでしょうか?

4.ActiveSheet.Shapes(Mid(ActiveChart.Name,Instr(1,ActiveChart.Name," ") +1)).Name = GrafName

この行Shapesがわかりません。ActiveChart.Nameからスペースのある場所までを取得してShapesの名前に"サンプルグラフ2"を渡していますが、わからないです。

以上です。よろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:Shapes 教えてください。  ■名前 : Jaka  ■日付 : 03/1/15(水) 13:44  -------------------------------------------------------------------------
   こんにちは。

>1.CellY = Cells(Rows.Count,"A").End(xlUp).Row
> Rows.Countには65536が入っているようです。End(xlUp).Rowが何をしているかわからないです。

A列1番下の行から上に向かって空白で無いセルの行。
下と同じ意味ですが、A列1番下の行からと行番号を指定ないのがミソ。
MsgBox Range("A65536").End(xlUp).Row


>2.Set myGf = ActiveSheet.Shapes(GrafName)
> Shapesは何をしているのでしょうか?

グラフも図形等の一種ですから、グラフ図形をmyGfにセットしてグラフがあるかないかのエラートラップです。あればそのまま使えるので。(更新時にグラフ名で更新するとうまく行かなかったんで、図形オブジェクトとして更新してみたらうまくいっんで図形オブジェクトとして扱う様にしました。)


>3..SeriesCollection(1).Name = "=" & """" & Range("A1").Value & """"
> これは.SeriesCollection(1).Name = Range("A1").Valueでも同じ表示になるような気がしますが、何か意味があるのでしょうか?

特別な意味はありません。マクロ記録した時に
ActiveChart.SeriesCollection(1).Name = "=""ううう"""
こんな感じだったんで、忠実に書いただけです。


>4.ActiveSheet.Shapes(Mid(ActiveChart.Name,Instr(1,ActiveChart.Name," ") +1)).Name = GrafName
>この行Shapesがわかりません。ActiveChart.Nameからスペースのある場所までを取得してShapesの名>前に"サンプルグラフ2"を渡していますが、わからないです。

グラフを新規に作った場合は、グラフがアクティブになりますが、そのままだと後々更新する時にグラフ名が解らないと、更新時にどのグラフを指定できない為、グラフを図形オブジェクトとして名前を付けるんですが、グラフ番号は、出来た準にExcelが勝手に付けるので作った時に、自分で名前を付けておけばいちいち調べずに済みます。

単純に MsgBox ActiveChart.Name とすると「Sheet1 グラフ 1」と返ってきます。
ですが、更新時に
ActiveSheet.Shapes("Sheet1 グラフ 1").Select
と、するとエラーになってしまいます。

グラフを選択するには、
ActiveSheet.Shapes("グラフ 1").Select
と、書かないとダメなわけで..。(名前付けも同じです。)


2と4の説明がごちゃ混ぜになっている所もありますが、マクロ記録をしてみたり色々思考錯誤してたら何となく出来ちゃったレベルなんで、こんなもんでゆるしてね!


最初は、こんな感じでグラフ名を取得してみたんですが、ダイレクト方式の方が効率がよさそうなんで...。
For Each shp In ActiveSheet.Shapes
  If shp.Type = 3 Then
    MsgBox shp.Name
  End If
Next
 ───────────────────────────────────────  ■題名 : ありがとうございました  ■名前 : Yoshie  ■日付 : 03/1/15(水) 14:58  -------------------------------------------------------------------------
   Jakaさん、お世話になりました。

親切に教えていただきましてありがとうございました。
とても勉強になります。グラフ表示は無事できあがりました。

まだまだExcelVBAの気持ちがわからず、やりたいことができない身です。
また何かあったらよろしくお願いします!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 548