Excel VBA質問箱 IV

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

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


1726 / 13646 ツリー ←次へ | 前へ→

【72322】SeriesCollection.Formula プロパティ参照時のエラー ぽぽ 12/7/12(木) 11:30 質問[未読]
【72323】Re:SeriesCollection.Formula プロパティ参... kanabun 12/7/12(木) 12:09 回答[未読]
【72324】Re:SeriesCollection.Formula プロパティ参... ぽぽ 12/7/12(木) 14:18 お礼[未読]
【72327】Re:SeriesCollection.Formula プロパティ参... あすなろ 12/7/12(木) 17:20 発言[未読]
【72331】Re:SeriesCollection.Formula プロパティ参... ぽぽ 12/7/12(木) 20:30 お礼[未読]
【72332】Re:SeriesCollection.Formula プロパティ参... あすなろ 12/7/12(木) 22:33 発言[未読]
【72344】Re:SeriesCollection.Formula プロパティ参... ぽぽ 12/7/17(火) 14:02 お礼[未読]

【72322】SeriesCollection.Formula プロパティ参...
質問  ぽぽ  - 12/7/12(木) 11:30 -

引用なし
パスワード
   環境 : Excel 2003

あるグラフの系列を参照する処理でエラーが出て困っています。
すべて同じシート内の範囲指定で作成されているグラフであり、
各系列の範囲は下記のようになっています。

      名前  値       項目軸     備考
系列1 :  $C$16  $D$16:$R*16   $D$15:$R$15  範囲内は全て空白
系列2 :  $C$17  $D$17:$R*17   $D$15:$R$15  範囲内は全て数値
系列3 :  $C$18  $D$18:$R*18   $D$15:$R$15  範囲内は全て数値
系列4 :  $C$19  $D$19:$R*19   $D$15:$R$15  範囲内は全て数値

この系列1の参照時にエラーが発生しています。

======================================================

〜 型宣言やらチャートオブジェクトのセットやら 〜

For i = 1 To .Chart.SeriesCollection.Count
  '// ここでエラー!
  tstrSeriesFormula = .Chart.SeriesCollection(i).Formula
  
  〜 処理部分 〜
  
Next i

======================================================

イミディエイトウィンドウにて i を 2〜4 に変更してみたところ、うまいこと Formula プロパティの値が取得できましたが、何故か 1 だけエラーが出て取得できませんでした。
値の範囲内が空白かどうかのチェック処理を入れるしか無いんでしょうか…?
よろしくお願い致します。

【72323】Re:SeriesCollection.Formula プロパティ...
回答  kanabun  - 12/7/12(木) 12:09 -

引用なし
パスワード
   ▼ぽぽ さん:
はじめまして。kanabunです
むかし、Chartの DisplayBlanksAs プロパティを利用する方法を
教えてもらったことがあります。

Sub try1()
  Dim Cht As Chart
  Set Cht = ActiveSheet.ChartObjects(1).Chart
  
  Dim Ser As Series
  Dim oldDISP As Long
  Dim tstrSeriesFormula$
  
  oldDISP = Cht.DisplayBlanksAs '現在の設定を保存
  Cht.DisplayBlanksAs = xlZero  '一時的に xlZero表示に!
  For Each Ser In Cht.SeriesCollection
    tstrSeriesFormula = Ser.Formula
    '---Run-time error '1004': _
      Unable to get the Formula property of the Series class
    Debug.Print tstrSeriesFormula
  Next
  Cht.DisplayBlanksAs = oldDISP '元の設定に戻す
End Sub

【72324】Re:SeriesCollection.Formula プロパティ...
お礼  ぽぽ  - 12/7/12(木) 14:18 -

引用なし
パスワード
   kanabunさん

> Chartの DisplayBlanksAs プロパティを利用する方法
こんなプロパティがあったんですね!

頂いたサンプルを元にプログラムを修正し、無事対処することができました。
ありがとうございました!

【72327】Re:SeriesCollection.Formula プロパティ...
発言  あすなろ  - 12/7/12(木) 17:20 -

引用なし
パスワード
   お邪魔します。
折れ線、散布図等はエラーになりますが、棒グラフならOKです。

With ActiveSheet.ChartObjects(1)
   With .Duplicate.Chart
     .ChartType = xlColumnClustered
     MsgBox .SeriesCollection(1).Formula
     .Parent.Delete
   End With
End With

【72331】Re:SeriesCollection.Formula プロパティ...
お礼  ぽぽ  - 12/7/12(木) 20:30 -

引用なし
パスワード
   あすなろさん。

こちらでも適当にグラフを作って確認してみました。
棒グラフの場合は普通に参照できますねぇ。
ひょっとして棒グラフの場合は DisplayBlanksAs プロパティのデフォルト値が
xlZero(2) になっているのかな?と思い調べてみましたが、 xlNotplotted(1) でした。

今回のグラフは「折れ線」だった為、あすなろさんの例を使うことはできませんでしたが、
今後の参考にさせて頂きます。

ありがとうございました。

【72332】Re:SeriesCollection.Formula プロパティ...
発言  あすなろ  - 12/7/12(木) 22:33 -

引用なし
パスワード
   お邪魔します。
意味が通じていなかったかな?

>今回のグラフは「折れ線」だった為、あすなろさんの例を使うことはできませんでしたが、

折線等はエラーになるので、グラフの複製を作り、棒グラフに変換後、
Formulaを取得、複製を破棄してます。グラフの種類を変更しても
Formulaは変わりませんよね。

【72344】Re:SeriesCollection.Formula プロパティ...
お礼  ぽぽ  - 12/7/17(火) 14:02 -

引用なし
パスワード
   確認遅くなってすいません。

>折線等はエラーになるので、グラフの複製を作り、棒グラフに変換後、
>Formulaを取得、複製を破棄してます。グラフの種類を変更しても
>Formulaは変わりませんよね。
なるほど。そういうやり方もあるんですね。
勘違いしていました。

kanabunさん、あすなろさん
アドバイスありがとうございました。
おかげでうまく解決するに至りました。

m( __ __ )m

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