[[20100422163716]] 『特定のシート以外でマクロ実行』(ビー) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『特定のシート以外でマクロ実行』(ビー)

 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.