2014/08/27

Excel VBAを使って全てのコメントを非表示にしたい

Excel のコメント機能、使ってます?
私は複雑な処理などの手順をコメントに書いたりしています。
さて、Excel VBAを使った業務アプリケーションの一つを起動したところ、全てのコメントが常に表示されてしまう現象に遭遇。
何十シートも修正しないとならない状況でしたので、全てのコメントを非表示にするVBAを書いてみました。
同じような現象で困っている方は是非利用してくださいね。
記事最後に、「オブジェクト ブラウザーの使い方」について書いています。

全てのコメントを非表示にする VBAのサンプル

サンプルは非常に簡単です。
全てのシート上にあるコメントを抽出し、非表示にするだけです。
Private Sub fncAllCommentsVisibleOff()
    Dim ws As Worksheet
    Dim cmt
    '全てのシートを確認
    For Each ws In Worksheets
        'シート内のすべてのコメントを確認
        For Each cmt In ws.Comments
            'コメントを非表示にする
            cmt.Visible = False
        Next
    Next
End Sub
余談:オブジェクト ブラウザを使う習慣
VBAを書く前に
何をどうすればいいのか?どう調べればいいのか?
が分からないとそこで指が止まってしまいませんか?
そして、面倒なのでインターネット上のサンプルをコピー&ペースト・・・
そして実行するも、なぜかエラーが表示され最後まで完了しない・・・
なんで?
これって「使用者がスクリプトを理解できていないから」ですよね。
私もコピー&ペーストする事はありますが、内容はしっかり見ます。
内容が分からないので、調べます。意味を理解します。
楽をするためには、やっぱり基礎を固める努力が必要です。

今回のサンプルに話を戻して。
最近の私は、VBAを使った開発時に[オブジェクト ブラウザー]を必ず使用します。
※VBAの画面を開き、[F2]ボタンを押してみてください。
今回のサンプルを書くにあたって、
  1. 検索フォームに[comment]と入力し検索
  2. [Worksheet]クラスのメンバー[commnets]プロパティは[Comments]クラスである事が分かる
  3. [Comments]クラスの[Item]関数は、[Comment]クラスである事が分かる
  4. [Comment]クラスのメンバー[Visible]プロパティは[Boolean]である事が分かる
といった具合で調査をし、サンプル中段の[cmt.Visible = False]を書きました。
使用言語のライブラリやクラス、メンバーを調べ、理解できる程度になれば開発がすごく楽になります。
IT Proでありながら業務アプリケーションを開発して分かってきた事を少し書いてみました。
ご参考までに。

スポンサーリンク

スポンサーリンク