1

列の 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
4

1 に答える 1