みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

excel2007でグラフの書式設定をするマクロ

excel2003で作成したマクロで、excel2003上では動作するのですが、excel2007ではエラーになります。

調べた限りでは、excel2007でVBAの仕様が変わったということも無いようですが、新しくexcel2007でマクロを記録してみてもエラーになり、困っています。

マクロの内容は、グラフの系列にラベルの書式設定をするというものです。

エラー内容「'HasDataLabels' メソッドは失敗しました: 'Series'オブジェクト」

----------------------------
Sub LabelSet()

Dim col_srs As SeriesCollection
Dim obj_srs As Series
    
    Sheets("Sheet1").ChartObjects(1).Activate
    Set col_srs = ActiveChart.SeriesCollection

    'データ系列ごとに個々の系列名を表示
    For Each obj_srs In col_srs
      With obj_srs
        .HasDataLabels = True
        .DataLabels.ShowSeriesName = True
        .DataLabels.ShowValue = True
        .DataLabels.Separator = Chr(10)
      End With
    Next
End Sub
----------------------------

投稿日時 - 2010-03-29 17:04:46

QNo.5787937

困ってます

質問者が選んだベストアンサー

当方のExcel2007では問題なく動くようです。
下記のようにすればどうなるでしょうか?

For Each obj_srs In Sheets("Sheet1").ChartObjects(1).Chart.SeriesCollection
With obj_srs
.HasDataLabels = True
.DataLabels.ShowSeriesName = True
.DataLabels.ShowValue = True
.DataLabels.Separator = Chr(10)
End With
Next

投稿日時 - 2010-03-29 18:38:09

お礼

早速の回答ありがとうございました。
お礼が遅くなり申し訳ありません。

問題の切り分けができていなかったようです。
新たに簡単なグラフを作り、上記のコードを実行したところ、問題なく動作しました。

散々試行錯誤したのですが、どうやら「シートの保護」の問題でした。
普段このシートには保護がかけてあり、「許可する操作」の「オブジェクトの編集」にチェックを入れています。
Excel2003ではその状態で上記マクロが動くのですが、Excel2007ではエラーになる、ということだったようです。

保護を全て外すと、元のコードでも問題なく動きました。
的外れな質問だったということですね・・。
せっかく回答いただいたのにお粗末な結末ですみません。

投稿日時 - 2010-04-02 15:40:57

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問