cmuch1(23.10.2014 6:04)citovat#021993 
Vlož do modulu příslušného listu ve VBA (alt+f11)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cmt As Comment, strCmt As String
Dim bigRange As Range
Set bigRange = Range("H2:H13")
If Not Intersect(Target, bigRange) Is Nothing Then
With Target.Offset(0, -5)
.ClearComments
strCmt = Target.Value
Set Cmt = .AddComment(strCmt)
With Cmt.Shape.TextFrame
.Characters.Font.Bold = False
.AutoSize = True
End With 'Cmt.Shape.TextFrame
End With 'Target.Offset
End If
End Sub

Trochu jsem upravil kod.
Nastav si heslo (zde "a") a pokud nebude vyhovovat šířka tak i s tím (zde 200)
Private Sub Worksheet_Change(ByVal Target As Range)
Dim PASSWORD As String
PASSWORD = "a"
ActiveSheet.Unprotect PASSWORD
Dim Cmt As Range
Dim bigRange As Range
Dim lArea As Long
Set bigRange = Range("H2:H22")
If Not Intersect(Target, bigRange) Is Nothing Then
Set Cmt = Target
With Cmt.Offset(0, -5)
.ClearComments
If Not IsEmpty(Target) Then
.AddComment.Text Text:=Cmt.Value
With .Comment.Shape
.TextFrame.Characters.Font.Bold = False
.TextFrame.AutoSize = True
If .Width > 300 Then
lArea = .Width * .Height
.Width = 200
' An adjustment factor of 1.1 seems to work ok.
.Height = (lArea / 200) * 1.1
End If
End With 'Cmt.Shape
End If
End With 'Cmt.Offset
End If
ActiveSheet.Protect PASSWORD
End Sub