我有以下代码处理我的一个列上的双击事件。基本上它是一个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
答案 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