- 締切済み
エクセルでセルの入力履歴をコメントで表示させる
お世話になります エクセルを勉強しているものです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count <> 1 Then Exit Sub If Target.Value = "" Then Exit Sub If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub myTime = "入力月日・時刻" & Chr(10) & Month(Date) & "月" & Day(Date) & "日" myTime = myTime & Chr(10) & Hour(Time) & ":" & Second(Time) Target.AddComment myTime End Sub を使うとコメント表示になるとあったので挑戦していますが 入力時は問題ないですが、そのセルの入力を削除してまた入力するとエラーになります。 これを回避する方法はありますか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- mitarashi
- ベストアンサー率59% (574/965)
おもしろそうなので、自分でも使ってやろうかといじっていたら長くなってしまいました。 xl2010で試していますが、コメントの文字数は280文字が限界の様なので(試行結果からで調べてはおりません)、最近の5件だけを保持する様にしています。時間の記録をFormatでもっと短くしたり、入力された値も記録していますので、入力される文字数が短い場合には、行数は増えせます。 ご参考まで。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myComment As String, currentComment As String Dim lineCount As Long, firstLFpos As Long If Target.Count <> 1 Then Exit Sub If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub If TypeName(Target.Comment) = "Nothing" Then myComment = CStr(Now()) & " : " & Target.Value Target.AddComment myComment lineCount = 1 Else currentComment = Target.NoteText lineCount = Len(currentComment) - Len(Replace(currentComment, Chr(10), "")) + 1 '5行に制限 コメントの上限は280文字らしい If lineCount >= 5 Then firstLFpos = InStr(1, currentComment, Chr(10)) currentComment = Mid(currentComment, firstLFpos + 1, Len(currentComment) - firstLFpos) Else lineCount = lineCount + 1 End If myComment = currentComment & Chr(10) & CStr(Now()) & " : " & Target.Value Target.Comment.Text myComment End If With Target.Comment.Shape .Width = 200 .Height = lineCount * 12 End With End Sub
- KURUMITO
- ベストアンサー率42% (1835/4283)
次のようにTarget.ClearCommentsを追加入力すればよいでしょう。 Target.ClearComments myTime = "入力月日・時刻" & Chr(10) & Month(Date) & "月" & Day(Date) & "日" myTime = myTime & Chr(10) & Hour(Time) & ":" & Second(Time) Target.AddComment myTime
- mu2011
- ベストアンサー率38% (1910/4994)
コメント追加の直前でコメント有無を判定、有ればコメント削除で如何でしょうか。 If Target.NoteText <> "" Then Target.ClearComments