プロが教えるわが家の防犯対策術!

こんばんは
下記マクロで FNameというファイルのグラフの数を数えて名前を取得しGnameというファイル
に同名のシートを作成したいのですが
実行時エラー'9'、インデックスが有効範囲にありません.と出てしまいます。
どなたかご存知の方ご教示お願いいたします。
Workbooks(FName).Activate
 For  s = 1 To Charts.Count

Windows(GName).Activate

Worksheets.Add

ActiveSheet.Name = Charts(s).Name

 Next s

A 回答 (3件)

#1です。



>ActiveSheet.Name = Charts(s).Name

ActiveSheet.Name = Workbooks(FName).Charts(s).Name
としてください。


Charts(s).Name
はどちらのブックに対しての操作なのかを考えてみてください。
頭に何も書かないとアクティブなブック(今回の場合ではGNameのほう)に対しての操作となります。
グラフシートがあるのはFNameのほうですから、明示的にWorkbooks(FName).Charts(s).Nameと書きます。
    • good
    • 0

>新規作成したシートはアクティブなのでそのシートの名前を


>Charts(s).Nameに変更したいのでしようとしているつもりなのですが・・・

#1さんが既に回答済みなんですが、、、

Charts(s).Nameは命令した時にアクティブになっている
ブックから取ってこようとするコマンドなので、
新規作成したシートのグラフを探しにいっています。
新規作成したシートにグラフは無いでしょう?

グラフ名を変数に退避しておくとか、ブックから
ちゃんと指定して命令するとかすればいいわけです。
    • good
    • 0

アクティブなブックがどちらなのかを常に気をつけていないといけません。



>ActiveSheet.Name = Charts(s).Name

右辺のCharts(s).Name はアクティブブックのそれを見に行こうとしています。が、ありませんからエラーとなるのだと思われます。
    • good
    • 0
この回答へのお礼

お忙しいところありがとうございます。
新規作成したシートはアクティブなのでそのシートの名前を
Charts(s).Nameに変更したいのでしようとしているつもりなのですが・・・
どこがいけないのでしょうか?

お礼日時:2013/08/06 12:45

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