列の 1 つでダブルクリック イベントを処理する次のコードがあります。基本的にはメモ列なので、ユーザーがダブルクリックすると...入力がポップアップし、メモを要求します。次に、VBA コードによって日付が追加され、セルに挿入されます。日付を太字にしたかったのです。
ただし、最初にコメントを入力すると、セルは正しいです。このような
2013/08/23:こんにちは
もう一度セルをダブルクリックして「Hi again」と入力すると、セル全体が太字になります
2013/08/23: こんにちは
2013/08/23: こんにちは。
これは、セル テキスト全体をリセットし、元のテキストに追加していないためだと思います。したがって、元の書式設定が失われます。
誰でもこれについてアイデアを流すことができますか?私がそれを機能させることができると私が考えた唯一の方法は、 ctrl(10) 文字を調べて見つけ、そのようにフォーマットすることですが、その方法は上にあります。
よろしくD
Option Explicit
Const STATUS_COL As Integer = 10
Const NOTES_COL As Integer = 13
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim newVal As String
Dim strNote As String
Dim lngPos As Long
If Target.Count > 1 Then GoTo exitHandler
Application.EnableEvents = False
On Error Resume Next
If Target.Column = NOTES_COL Then 'Add a note
lngPos = Len(Target.Value)
strNote = InputBox(Prompt:="Enter Note", _
Title:="Notes", Default:="")
If (Len(Trim(strNote)) > 0) Then
If Target.Value = "" Then
newVal = Date & ": " & strNote
Else
newVal = Target.Value + Chr(10) & Date & ": " & strNote
End If
Target.Value = newVal 'set the new value
Target.Characters(Start:=lngPos + 1, Length:=11).Font.Bold = True
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub