-PR-
解決済み

ExcelVBA 変数を使って項目軸ラベルを追加するには

  • すぐに回答を!
  • 質問No.33944
  • 閲覧数489
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 70% (26/37)

Excel2000 VBAで

一度作ったグラフに
項目軸ラベルを追加しようとすると
エラーが出ます.

Dim MyWorkBookName As String
Dim MySheetName As String
Dim LastRow As Integer

MyWorkBookName = ActiveWorkbook.Name
MySheetName = ActiveSheet.Name
LastRow= 52

With ActiveChart

.SeriesCollection(1).XValues = _
Workbooks(MyWorkBookName). _
Worksheets(MySheetName). _
Range(Cells(2, 6), Cells(LastRow, 6))

End With

変数を使って表したいのですが...
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル11

ベストアンサー率 49% (139/279)

補足します。
Activeにして使用するのは、あまり良い方法ではありません。Activeにするとスピードが落ちるためです。
基本的に、どのオブジェクトもActiveにしなくても参照できますので、Activeにしないで、良く使うオブジェクトはオブジェクト変数に設定して使用するのがいい方法だと思います。
この場合は、下記のようにすれば、Activeにしないで処理することができます。

Sub test()
Dim LastRow As Integer
Dim objMySheet As Worksheet

Set objMySheet = ActiveSheet

LastRow = 52

With objMySheet.ChartObjects(1).Chart

.SeriesCollection(1).XValues = _
objMySheet. _
Range(objMySheet.Cells(2, 6), objMySheet.Cells(LastRow, 6))

End With
お礼コメント
seebeck

お礼率 70% (26/37)

>Activeにするとスピードが落ちるためです。

これは良い事を聞きました.
ありがとうございます
投稿日時 - 2001-02-04 05:34:17
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1
レベル11

ベストアンサー率 49% (139/279)

Cellsの対象オブジェクトを指定していないためにエラーが出ているのだと思います。

また、シートなどを名前でバインディングしていますが、オブジェクトでバインドしたほうが効率がいいですよ。

Dim LastRow As Integer
Dim objMySheet As Worksheet

Set objMySheet = ActiveSheet

LastRow = 52

With ActiveChart

.SeriesCollection(1).XValues = _
objMySheet. _
Range(objMySheet.Cells(2, 6), objMySheet.Cells(LastRow, 6))

End With

  • 回答No.2
レベル5

ベストアンサー率 40% (2/5)

この処理を動作させたときには、正常動作する場合としない場合があります。
グラフをアクティブ(グラフを選択した状態)にし動作させることで、正常動作し、
非アクティブでは、エラーが発生します。
そこで、そのまま使用するためには、任意のグラフをアクティブにする処理
(下記参照)が必要になります。


LastRow = 52

'追加行 -- Start ---------------------------------------------------
'Dim ChaObj As ChartObject
'
'For Each ChaObj In ChartObjects
' Debug.Print ChaObj.Index '出力結果(1)、グラフの数分出力される。
' Debug.Print ChaObj.Name '出力結果(2)、グラフの数分出力される。
'Next

'下記の2行中どちらかを使用
ActiveSheet.ChartObjects(1).Activate '出力結果(1)を()内に使用
ActiveSheet.ChartObjects("Chart 1").Activate '出力結果(2)を()内に使用

'追加行 -- Endt -----------------------------------------------------

With ActiveChart
お礼コメント
seebeck

お礼率 70% (26/37)

アクティブと非アクティブ,
今後気をつけます.
投稿日時 - 2001-02-04 05:36:24
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ