ボブは、数式を記述して、セルではなくコメントで答えを得ることができるかどうか尋ねました。簡単に言えば、いいえ、数式でそれを行うことはできません。ただし、マクロを使用して実行できます。たとえば、次のマクロは2つのセル(A1とB1)の内容を追加し、その結果をセルC1に添付されたコメントに貼り付けます。

Sub MakeComment()

With Worksheets(1).Range("C1").AddComment         .Visible = True         .Text "Total of cell A1 plus cell B1 is equal to " & _           ([A1].Value) + ([B1].Value)

End With End Sub

セルの範囲でマクロを実行する場合は、別のアプローチが必要です。次のマクロは、選択範囲内のすべてのセルをループします。セルに数式が含まれている場合、マクロはそのセルに添付されたコメントに値(数式の結果)を配置します。

Sub ValueToComment()

Dim rCell As Range     For Each rCell In Selection         With rCell             If .HasFormula Then                 On Error Resume Next                 .Comment.Delete                 On Error GoTo 0                 .AddComment                 .Comment.Text Text:=CStr(rCell.Value)

End If         End With     Next     Set rCell = Nothing End Sub

選択範囲内のセルをループしているときに、セルの1つに数式と既存のコメントがある場合、コメントは削除され、数式の結果を含む新しいコメントに置き換えられます。

その後、セルの値と同じ番号のコメントが表示されます。 CStrの代わりに、Format関数を使用して、任意の方法で値を表示することもできます。

特定のセルの内容を更新するたびにコメントを変更するマクロを作成することもできます。たとえば、誰かがセルC11に変更を加えるたびに、そのセルにあるものすべての結果をセルF15に添付されたコメントに配置したいとします。次のマクロはまさにそれを行います:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sResult As String

If Union(Target, Range("C11")).Address = Target.Address Then         Application.EnableEvents = False         Application.ScreenUpdating = False         sResult = Target.Value         Target.ClearContents

With Range("F15")

.ClearComments             .AddComment             .Comment.Text Text:=sResult         End With         Application.EnableEvents = True         Application.ScreenUpdating = True     End If End Sub

誰かが数式(または値)をセルC11に入力すると、その数式(または値自体)の結果がセルF15に添付されたコメントに配置されます。これはイベントによってトリガーされるマクロであるため、機能するワークシートのコードウィンドウに入力する必要があります。

最後に、マクロで列全体を監視することもできます。次のマクロは、前のマクロと同じように、ワークシートのChangeイベントを使用します。ただし、列Fで変更が行われた場合、およびその列の1つのセルが変更された場合にのみ、アクションが開始されます。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count > 1 Then Exit Sub     If Target.Column <> 6 Then Exit Sub

Dim x As String     Application.EnableEvents = False     If Target.HasFormula Then         x = Evaluate(Target.Formula)

Else         x = Target.Text     End If

Target.ClearComments     If Target.Text = "" Then         Application.EnableEvents = True         Exit Sub     End If

Target.AddComment x     Target = ""

Application.EnableEvents = True End Sub

ユーザーが列Fの単一のセルに変更を加えると、マクロは入力された内容の結果を取得し、そのセルに添付されたコメントに配置します。その後、セルの内容が削除されます。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13038)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice 365のExcelに適用されます。Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。