即効テクニック

セル操作関連のテクニック

コメントを編集状態にする

(Excel 97/2000/2002/2003/2007)
セルにコメントを挿入するには、次のようにします。

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に対して送信されてしまいます。