[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『特定のシート以外でマクロ実行』(ビー)
Windows XP、Excel2003
よく、参考にさせていただいています。マクロ勉強中です。 ご教示、よろしくお願いいたします。
複数のシート上で列の削除や非表示にするというマクロを作成しました。 最後のシート以外をアクティブにということで以下のようにしたのですが 月によってシート数が増減する可能性がでてきました。
Sheets(Array(1, 2, 3, 4, 5, 6, 7, 8, 9)).Select Sheets(1).Activate
シート名"目次"以外をアクティブにするにはどのように記述したらいいの でしょうか?
"目次"以外のシート名の配列を作成してやれば・・・
Dim SHNames() As Variant, aSh As Worksheet, C As Long For Each aSh In ThisWorkbook.Worksheets If aSh.Name <> "目次" Then C = C + 1 ReDim Preserve SHNames(1 To C) SHNames(C) = aSh.Name End If Next Sheets(SHNames).Select Sheets(SHNames(1)).Activate
(白茶)
複数シートを選択してもアクティブシートはひとつです。 ActivateとSelectは少し意味合いが違うので注意しましょう。 これを機会にSelectに頼らず、オブジェクト変数を使って ループ処理に挑戦してはいかがでしょうか。 dim mySh as worksheet for each mySh in worksheets If mySh.Name <> "目次" then '処理 End if Next mySh (みやほりん)(-_∂)b
(白茶)さん、(みやほりん)(-_∂)bさん
ご回答ありがとうございます。
めずらしくバタバタしてて遅くなってしまいました。 落ち着いてからやってみます。
ActivateとSelectの意味合いの指摘もありがとうございます。
(ビー)
(みやほりん)(-_∂)bさん 思うようにできなくて(1シートしか処理しない)自分でも調べて '処理の前にmySh.Activateを追加したらできました。 それともmySh.Activateがなくても動かなければおかしいですか?
(白茶)さん 処理はEnd Ifの前でいいんですよね?
以下でエラーになります。 Sheets(SHNames).Select 実行時エラー'9'インデックスが有効範囲内にありません。 処理を入れるところ自体が間違っていますか?
確認遅くなってすみません。 ご回答よろしくお願い致します。
(ビー)
コードが非公開ですから、ノーコメント。 アドバイスはすでにしてます。 みやほりん
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.