[[20120502053837]] 『シート名の一覧表示の改善』(唯一無二) ページの最後に飛ぶ

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

 

『シート名の一覧表示の改善』(唯一無二)
 Excel2003  WindowsXPを使用しています。 
 よろしくお願いします。
 下記のコードでシート名一覧を表示させています。

 Sub マクロ489()

 ActiveSheet.Unprotect Password:=""

 Range("c7").Select
 Dim sheetx As Object, x As Long
 x = ActiveCell.Row

 For Each sheetx In ActiveWorkbook.Worksheets

 ActiveSheet.Cells(x, ActiveCell.Column) = sheetx.Name
 x = x + 1
 Next

 ActiveSheet.Protect Password:=""

 Range("a8").Select

 今回の質問ですが、シートの中に書式→シート→(表示しない)で非表示のものがある
 のですが マクロ実行時この非表示のシート名を表示させたくない(表示の対象外)と
 したいと思うのですがコードをどのように変更すればいいでしょうか
 非表示のシート名は「記事」です
 よろしくお願いします。 


 シート名が入っている変数が sheetx.Name だということ、また 除外すべきシート名は"記事"だということがわかっているのだから
 If をヘルプで調べれば、充分に自力で対応できると思うんだけど?

    If sheetx.Name <> "記事" Then
        '処理
    End If

  シート名が不特定で、非表示のものを除外するなら

    If sheetx.Visible Then
        '処理
    End If

 テーマとははずれるけど、唯一無二さんの過去レスを見ると様々なものにチャレンジしておられるようで
 また一歩一歩、VBAを自分のものにしつつある様子が伺えて好ましいと思っている。
 ここらで、コード記述の方法を少し、レベルアップする方向にも目を向けたらいいのかなと。
 老婆心ながら以下。

 Sub マクロ489改()
    Dim sheetx As Worksheet, x As Long         '変数宣言はプロシジャのトップに。シートのデータ型はObjectでもいいけど、より明確に。

    'コード全体は、インデントをつけて記述しよう

    ActiveSheet.Unprotect Password:=""

    x = 7       'C7の行番号 セルをSelect して ActiveCell として処理するのはあまり好ましくない

    For Each sheetx In ActiveWorkbook.Worksheets

        If sheetx.Visible Then                  '表示シートのみ対象
            Cells(x, "C").Value = sheetx.Name   'セルの表現方法はいろいろあるけど、プロパティ(この場合はValue)を明示。
            x = x + 1
        End If

    Next

    ActiveSheet.Protect Password:=""

    Range("a8").Select      '意味がわからないけど、残しておいた

 End Sub

 (ぶらっと)


 ぶらっとさん。ありがとうございました。
 まず、変更追加して頂いたコードで希望通りになりました。
 >If をヘルプで調べれば、充分に自力で対応できると思うんだけど?
 おっしゃる通りだと思います。
 不勉強もあり、この学校で「全文検索」でいろいる検索して探し
 ヒントなり正解を得て進んだり、わからなっから投稿により質問を
 させて頂き解決しています。
 その都度はいいのですが、ぶらっとさんのおしゃるとうりいわいる基礎
 の部分がわからないので応用がきかないのが現状です、
 出勤前なのでとりあえずお礼のみ書きました。
 戻りましたら、教えて頂いたコードの中身を確認します。
 ありがとうございました。唯一無二


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.