将variables的字体颜色更改为单元格中文本的一部分

我正在努力与应该颜色部分文本的VBAmacros。

macros看起来像

Sub Note() Dim c As Range Dim val As String Set c = ActiveCell val = InputBox("Add note", "Note text") If IsEmpty(c.Value) = True Then c.Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val Else c.Value = c.Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & ": " & val End If End Sub 

我想实现,现在()将是红色的,其余的文本将是绿色的。

我试图玩.Font.Color = vbRed等,但没有任何运气

我也看这个答案,但不是我想要的

你链接了一个答案,但你没有使用那里的内容,为什么?

尝试这个 :

 Sub Note() Dim c As Range Dim val As String Dim StartChar As Integer, _ LenColor As Integer Set c = ActiveCell val = InputBox("Add note", "Note text") With c .Font.Color = RGB(0, 0, 0) If IsEmpty(.Value) = True Then StartChar = 1 LenColor = Len("DD MMM YY Hh:Nn") .Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val .Characters(Start:=StartChar, Length:=LenColor).Font.Color = RGB(255, 0, 0) Else StartChar = Len(.Value) + 1 LenColor = Len("DD MMM YY Hh:Nn") .Value = .Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & ": " & val .Characters(Start:=StartChar, Length:=LenColor).Font.Color = RGB(255, 0, 0) End If End With 'c End Sub 

尝试像这样:

 Option Explicit Sub Note() Dim c As Range Dim val As String: val = "vit" Dim lngLen As Long Set c = ActiveCell c.Value = Format(Now(), "DD MMM YY Hh:Nn") & ": " & val lngLen = Len(Format(Now(), "DD MMM YY Hh:Nn")) c.Characters(Start:=1, Length:=lngLen).Font.Color = vbRed End Sub 

我已经删除了input框,但可以轻松地将其退回。 它可能会给你想要的东西。不用多说,它要求的是Now()格式的长度,并且用公式中的前N个符号以红色着色,遵循你在问题中提到的问题的逻辑。

尝试这个:

 Sub Note() Dim c As Range Dim val As String Dim lngPos As Integer Set c = ActiveCell val = InputBox("Add note", "Note text") c.Value = "" If IsEmpty(c.Value) = True Then c.Value = Format(Now(), "DD MMM YY Hh:Nn") & " - " & val lngPos = InStr(ActiveCell.Value, " - ") With ActiveCell.Font .ColorIndex = 4 End With With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font .ColorIndex = 3 'or .Color = RGB(255, 0, 0) End With Else c.Value = c.Value & Chr(10) & Format(Now(), "DD MMM YY Hh:Nn") & " - " & val lngPos = InStr(ActiveCell.Value, " - ") With ActiveCell.Font .ColorIndex = 4 End With With ActiveCell.Characters(Start:=1, Length:=lngPos - 1).Font .ColorIndex = 3 'or .Color = RGB(255, 0, 0) End With End If End Sub