Excel VBA格式在插入字符时丢失

时间:2013-08-26 16:47:34

标签: excel vba excel-vba

我有以下代码处理我的一个列上的双击事件。基本上它是一个Notes列,所以当用户双击它时...它弹出一个输入并提示注释。然后,VBA代码会附加日期并将其插入到单元格中。我希望日期能够大胆。

然而,当我第一次输入评论时,单元格是正确的。喜欢这个

23/08/2013:您好

当我再次双击单元格并再次输入“Hi”时,整个单元格变为粗体

23/08/2013:您好

2013年8月23日:您好再次

我认为这是因为我正在重置整个单元格文本而不是附加到原始文本..因此丢失了原始格式。

任何人都可以对此提出任何想法。我估计我可以让它工作的唯一方法是查看并找到ctrl(10)char并将其格式化,但它的方式超过顶部。

尊重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

1 个答案:

答案 0 :(得分:2)

Sub tester()
    AddNote ActiveSheet.Range("A1"), "hello"
    AddNote ActiveSheet.Range("A1"), "world"
End Sub


Sub AddNote(rng As Range, txt As String)
    Dim l As Long, s As String
    l = Len(rng.Value)
    s = IIf(l > 0, Chr(10), "") & Format(Date, "mm/dd/yyyy") & ": " & txt
    rng.Characters(l + 1, Len(s)).Text = s
    rng.Characters(l + 1, 11).Font.Bold = True
End Sub