セルにコメントを挿入するには、次のようにします。
Sub Sample1()
ActiveCell.AddComment.Text "これはコメントです"
End Sub
コメントを挿入するときに注意しなければいけないのは、すでにコメントが挿入されているセルに対してAddCommentメソッドを実行するとエラーが発生するということです。
コメントを挿入するときは、すでにコメントが挿入されているかどうかを先に確認します。
それには、TypeName関数を使います。
Sub Sample2()
With ActiveCell
If TypeName(.Comment) = "Comment" Then
MsgBox "すでにコメントが挿入されています"
Else
.AddComment.Text "これはコメントです"
End If
End With
End Sub
コメント枠はShapeオブジェクトとして操作できます。
次のコードは、アクティブセルに挿入されているコメント枠の大きさを変更します。
Sub Sample3()
With ActiveCell
If TypeName(.Comment) = "Nothing" Then
MsgBox "挿入が挿入されていません"
Else
.Comment.Shape.Height = 100
.Comment.Shape.Width = 200
.Comment.Visible = True
End If
End With
End Sub
このようにコメントは、VBAから自由に操作できます。
しかし、Commentオブジェクトの操作では、ひとつ難しいものがあります。
それは、コメントを編集状態にすることです。
手動操作では、右クリックメニューから[コメントの挿入]を実行するとコメント枠が挿入されると同時に、コメントが編集状態になります。
また、すでにコメントが入力されているセルを右クリックして[コメントの編集]を実行したときも、コメントが編集状態になります。
しかし、Commentオブジェクトには、コメントを編集状態にするというメソッドもプロパティも用意されていません。
VBAからコメントを編集状態にするには、どうしたらいいのでしょう。
難しく考えることはありません。
手動操作でのコマンドを、VBAから実行してやればいいのです。
[コメントの挿入]および[コメントの編集]には、Shift+[F2]キーというショートカットキーが割り当てられています。
VBAから、このキーを送信してやれば、コメントを編集状態にできます。
Sub Sample4()
With ActiveCell
If TypeName(.Comment) = "Nothing" Then
.AddComment.Text "これはコメントです"
End If
Application.SendKeys "+{F2}"
End With
End Sub
上記のマクロは、セルにコメントが挿入されていない場合は、新しいコメントを挿入して編集状態にします。
●補足●
このマクロは、ワークシート上から実行してください。
VBEから[F5]キーなどで実行すると、SendKeysによるShift+[F2]キーがVBEに対して送信されてしまいます。