アプリ版:「スタンプのみでお礼する」機能のリリースについて

マクロの記録にて、グラフに横軸ラベルの追加を記録したところ
以下のようなコードになりました。

ActiveSheet.ChartObjects("グラフ 30").Activate
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "μsec"

これと同じことをVBAのコードから実行しようとしたのですが、
 ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "μsec"
の行にて"オブジェクトが必要です"というエラーがでました。

何のオブジェクトが足りないのでしょうか?

ActiveSheet.ChartObjects("グラフ 30").Activate にて
チャートオブジェクトは指定されているので、チャートオブジェクトでは無いと思うのですが・・

A 回答 (1件)

>"オブジェクトが必要です"


のエラーですか。
『AxisTitleクラスのTextプロパティを設定できません』ではなく?
バージョンが2010なのでしょうか。

いずれにしても、Activateに頼らないコーディングに切り替えたほうが良いです。
それにマクロ記録で .Axes(xlValue, xlPrimary).HasTitle = True 的なコードは記録されていませんか?
対象の「軸ラベル」を表示させてからのText設定、なのでしょう。
With ActiveSheet.ChartObjects(1).Chart.Axes(xlValue, xlPrimary)
  .HasTitle = True
  .AxisTitle.Text = "μsec"
End With
    • good
    • 1
この回答へのお礼

>『AxisTitleクラスのTextプロパティを設定できません』ではなく?
>バージョンが2010なのでしょうか。
Excel2007です。
「オブジェクトが必要です」とメッセージボックスが表示されました。


>いずれにしても、Activateに頼らないコーディングに切り替えたほうが良いです。
すいません、どうやって追加するのか試しにマクロ記録を使用したところ深みにはまりました

>それにマクロ記録で .Axes(xlValue, xlPrimary).HasTitle = True 的なコードは
>記録されていませんか?
HasTitleはなく、以下のようなコードが記録されました。
ActiveChart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ActiveSheet.ChartObjects("グラフ 3").Activate
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "μsec"
ActiveSheet.ChartObjects("グラフ 3").Activate
ActiveChart.ChartArea.Select



原因がわかりました初歩的な勘違いです。
チャートオブジェクトを以下で定義できると考えていたのですが、
シート名.ChartObjects("グラフ名")
正しくは以下ですね
シート名.ChartObjects("グラフ名").Chart

これで「オブジェクトが必要です」は解決できましたが、
これでも別のエラーが出ました、おそらくラベルが表示されてないエラーだと思います。
教えていただいた HasTitle = True を使用して
以下のようにしたところうまくいきました、
ありがとうございました。

ChartObjects(ActiveChart.Parent.Name).Chart.Axes(xlValue, xlPrimary).HasTitle = True
ChartObjects(ActiveChart.Parent.Name).Chart.SetElement (msoElementPrimaryValueAxisTitleRotated)
ChartObjects(ActiveChart.Parent.Name).Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "電界強度(V/m)"
ChartObjects(ActiveChart.Parent.Name).Chart.SetElement (msoElementPrimaryCategoryAxisTitleAdjacentToAxis)
ChartObjects(ActiveChart.Parent.Name).Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "μsec"

お礼日時:2011/07/13 11:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています