• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:横軸ラベルの追加に関するエラー(VBA))

VBAで横軸ラベルの追加を行う際に「オブジェクトが必要です」というエラーが発生する理由

このQ&Aのポイント
  • VBAでグラフの横軸ラベルの追加を行う際に、「オブジェクトが必要です」というエラーメッセージが表示されることがあります。
  • このエラーは、ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "μsec"の行で発生しています。
  • 原因は、ActiveChart.Axes(xlValue, xlPrimary)が存在しないため、オブジェクトが必要な状態ではないことです。

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

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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

Gyustab
質問者

お礼

>『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"

すると、全ての回答が全文表示されます。

関連するQ&A