Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » コメントの内容を取得する

対象:Excel2002, Excel2003, Excel2007

セルのコメント機能は便利です。

ですがあくまでも一時的に使うものでしょう。

例えば、Excelで何らかのデータベースを作成しているようなときに、コメントを大量に使ってしまう方がいらっしゃいます。

そのような場合、コメントを多用するより、何らかのフィールドを作成してセルに文字列を入力しておくほうが、後々の使い勝手はいいはずです。

そんなコメントの多用状態を解消するために、コメントに入力されている文字列をセルに移動するといった作業が実務で発生することがあります。

コメントの量が少なければ手作業でおこなっても構いませんが、大量のコメントが挿入されているときに、コメントに入力されている文字列を手作業でセルに移動するのは、かなりの手間です。

[スポンサードリンク]

そんなときは、VBA(Visual Basic for Applications)で作成したユーザー定義関数と、値の貼り付けを利用してコメントに入力された文字列をセルに移動してはいかがでしょう。

▼コメントの内容を表示するユーザー定義関数
Function CellCommentText(objCell As Range) As String

 Application.Volatile
 
 If objCell.Comment Is Nothing Then
  CellCommentText = ""
 Else
  CellCommentText = objCell.Comment.Text
 End If

End Function

実際にコメント内容を表示するのは、
 If objCell.Comment Is Nothing Then
  CellCommentText = ""
 Else
  CellCommentText = objCell.Comment.Text
 End If
の部分です。

引数に指定されたセルにコメントがなければ空白文字列を返し、
 If objCell.Comment Is Nothing Then
  CellCommentText = ""
コメントが存在しているときにはコメントのテキストを取得して返します。
 Else
  CellCommentText = objCell.Comment.Text

この実際の処理を行うIF文の部分だけだと、コメントが変更されても、CellCommentText関数でセルに表示したコメント内容が変更されない状態になってしまいます。

それを回避するために、
 Application.Volatile
を入れてあります。

Volatile関数にすることで、コメントを変更しても[F9]キーや[Shift]+[F9]キーなどで再計算をすれば、CellCommentText関数を利用しているセルの値が変更されます。

▼サンプルファイル(003594.xls 46KByte)ダウンロード

サンプルファイルには、上記のユーザー定義関数CellCommentTextを作成し、ワークシート上ではCellCommentText関数でコメントの内容をセルに表示させてあります。

コメントの多用されているExcelファイルの整理に苦労した経験のある方は、一度ご確認ください。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » ユーザー定義関数 » コメントの内容を取得する

「ユーザー定義関数」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.