- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VBAの実行時エラー'9'について)
VBAの実行時エラー'9'について
このQ&Aのポイント
- VBAの実行時エラー'9'について説明します。
- マクロでファイルのグラフの数を数えて名前を取得し、同じ名前のシートを作成したい場合、実行時エラー'9'が発生することがあります。
- 解決策としては、有効なインデックス範囲内で処理を行う必要があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 >ActiveSheet.Name = Charts(s).Name を ActiveSheet.Name = Workbooks(FName).Charts(s).Name としてください。 Charts(s).Name はどちらのブックに対しての操作なのかを考えてみてください。 頭に何も書かないとアクティブなブック(今回の場合ではGNameのほう)に対しての操作となります。 グラフシートがあるのはFNameのほうですから、明示的にWorkbooks(FName).Charts(s).Nameと書きます。
その他の回答 (2)
- MARU4812
- ベストアンサー率43% (196/452)
回答No.2
>新規作成したシートはアクティブなのでそのシートの名前を >Charts(s).Nameに変更したいのでしようとしているつもりなのですが・・・ #1さんが既に回答済みなんですが、、、 Charts(s).Nameは命令した時にアクティブになっている ブックから取ってこようとするコマンドなので、 新規作成したシートのグラフを探しにいっています。 新規作成したシートにグラフは無いでしょう? グラフ名を変数に退避しておくとか、ブックから ちゃんと指定して命令するとかすればいいわけです。
- MSZ006
- ベストアンサー率38% (390/1011)
回答No.1
アクティブなブックがどちらなのかを常に気をつけていないといけません。 >ActiveSheet.Name = Charts(s).Name 右辺のCharts(s).Name はアクティブブックのそれを見に行こうとしています。が、ありませんからエラーとなるのだと思われます。
お礼
お忙しいところありがとうございます。 新規作成したシートはアクティブなのでそのシートの名前を Charts(s).Nameに変更したいのでしようとしているつもりなのですが・・・ どこがいけないのでしょうか?